Skip to content

Commit edcab95

Browse files
committed
fix tests
1 parent a3a4d4e commit edcab95

File tree

1 file changed

+120
-4
lines changed

1 file changed

+120
-4
lines changed

test/SILGen/stored_property_default_arg.swift

Lines changed: 120 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,33 @@
22

33
// Currently, this only appears for memberwise initializers.
44

5+
// CHECK: default argument 0 of A.init(b:c:)
6+
// CHECK-NEXT: sil hidden [ossa] @$s27stored_property_default_arg1AV1b1cACSi_SbtcfcfA_ : $@convention(thin) () -> Int {
7+
// CHECK-NEXT: bb0:
8+
// CHECK-NEXT: function_ref variable initialization expression of A.b
9+
// CHECK-NEXT: [[A_B_REF:%.*]] = function_ref @$s27stored_property_default_arg1AV1bSivpfi : $@convention(thin) () -> Int
10+
// CHECK-NEXT: [[A_B:%.*]] = apply [[A_B_REF]]() : $@convention(thin) () -> Int
11+
// CHECK-NEXT: return [[A_B]] : $Int
12+
// CHECK-NEXT: }
13+
14+
// CHECK: default argument 1 of A.init(b:c:)
15+
// CHECK-NEXT: sil hidden [ossa] @$s27stored_property_default_arg1AV1b1cACSi_SbtcfcfA0_ : $@convention(thin) () -> Bool {
16+
// CHECK-NEXT: bb0:
17+
// CHECK-NEXT: function_ref variable initialization expression of A.c
18+
// CHECK-NEXT: [[A_C_REF:%.*]] = function_ref @$s27stored_property_default_arg1AV1cSbvpfi : $@convention(thin) () -> Bool
19+
// CHECK-NEXT: [[A_C:%.*]] = apply [[A_C_REF]]() : $@convention(thin) () -> Bool
20+
// CHECK-NEXT: return [[A_C]] : $Bool
21+
// CHECK-NEXT: }
22+
523
struct A {
624
var b: Int = 0
725
var c: Bool = false
826
}
927

1028
// CHECK-LABEL: sil hidden [ossa] @$s27stored_property_default_arg17checkConcreteTypeyyF : $@convention(thin) () -> () {
1129
func checkConcreteType() {
12-
// CHECK: function_ref variable initialization expression of A.c
13-
// CHECK-NEXT: [[C1_REF:%.*]] = function_ref @$s27stored_property_default_arg1AV1cSbvpfi : $@convention(thin) () -> Bool
30+
// CHECK: function_ref default argument 1 of A.init(b:c:)
31+
// CHECK-NEXT: [[C1_REF:%.*]] = function_ref @$s27stored_property_default_arg1AV1b1cACSi_SbtcfcfA0_ : $@convention(thin) () -> Bool
1432
// CHECK-NEXT: [[C1:%.*]] = apply [[C1_REF]]() : $@convention(thin) () -> Bool
1533
// CHECK-NEXT: function_ref A.init(b:c:)
1634
// CHECK-NEXT: [[A1_REF:%.*]] = function_ref @$s27stored_property_default_arg1AV1b1cACSi_SbtcfC : $@convention(method) (Int, Bool, @thin A.Type) -> A
@@ -26,15 +44,24 @@ func checkConcreteType() {
2644
let e = A(c: true)
2745
}
2846

47+
// CHECK: default argument 1 of F.init(g:h:)
48+
// CHECK-NEXT: sil hidden [ossa] @$s27stored_property_default_arg1FV1g1hACyxGx_SitcfcfA0_ : $@convention(thin) <T> () -> Int {
49+
// CHECK-NEXT: bb0:
50+
// CHECK-NEXT: function_ref variable initialization expression of F.h
51+
// CHECK-NEXT: [[F_H_REF:%.*]] = function_ref @$s27stored_property_default_arg1FV1hSivpfi : $@convention(thin) <τ_0_0> () -> Int
52+
// CHECK-NEXT: [[F_H:%.*]] = apply [[F_H_REF]]<T>() : $@convention(thin) <τ_0_0> () -> Int
53+
// CHECK-NEXT: return [[F_H]] : $Int
54+
// CHECK-NEXT: }
55+
2956
struct F<T> {
3057
var g: T
3158
var h: Int = 0
3259
}
3360

3461
// CHECK-LABEL: sil hidden [ossa] @$s27stored_property_default_arg16checkGenericTypeyyF : $@convention(thin) () -> () {
3562
func checkGenericType() {
36-
// CHECK: function_ref variable initialization expression of F.h
37-
// CHECK-NEXT: [[H1_REF:%.*]] = function_ref @$s27stored_property_default_arg1FV1hSivpfi : $@convention(thin) <τ_0_0> () -> Int
63+
// CHECK: function_ref default argument 1 of F.init(g:h:)
64+
// CHECK-NEXT: [[H1_REF:%.*]] = function_ref @$s27stored_property_default_arg1FV1g1hACyxGx_SitcfcfA0_ : $@convention(thin) <τ_0_0> () -> Int
3865
// CHECK-NEXT: [[H1:%.*]] = apply [[H1_REF]]<Int>() : $@convention(thin) <τ_0_0> () -> Int
3966
// CHECK-NEXT: function_ref F.init(g:h:)
4067
// CHECK-NEXT: [[F1_REF:%.*]] = function_ref @$s27stored_property_default_arg1FV1g1hACyxGx_SitcfC : $@convention(method) <τ_0_0> (@in τ_0_0, Int, @thin F<τ_0_0>.Type) -> @out F<τ_0_0>
@@ -63,3 +90,92 @@ func checkOptionalNil() {
6390
// CHECK-NEXT: {{.*}} = apply [[J2_REF]]([[K1_REF]], {{.*}}, {{.*}}) : $@convention(method) (Optional<Bool>, Optional<Int>, @thin J.Type) -> J
6491
let n = J(l: 316)
6592
}
93+
94+
// CHECK: default argument 0 of O.init(p:q:)
95+
// CHECK-NEXT: sil hidden [ossa] @$s27stored_property_default_arg1OV1p1qACyxGx_x_SittcfcfA_ : $@convention(thin) <T where T : ExpressibleByIntegerLiteral> () -> @out T {
96+
// CHECK: bb0([[PARAM_0:.*]] : $*T):
97+
// CHECK-NEXT: function_ref variable initialization expression of O.p
98+
// CHECK-NEXT: [[O_P_REF:%.*]] = function_ref @$s27stored_property_default_arg1OV1pxvpfi : $@convention(thin) <τ_0_0 where τ_0_0 : ExpressibleByIntegerLiteral> () -> @out τ_0_0
99+
// CHECK-NEXT: [[O_P:%.*]] = apply [[O_P_REF]]<T>([[PARAM_0]]) : $@convention(thin) <τ_0_0 where τ_0_0 : ExpressibleByIntegerLiteral> () -> @out τ_0_0
100+
// CHECK-NEXT: [[RETURN:%.*]] = tuple ()
101+
// CHECK-NEXT: return [[RETURN]] : $()
102+
// CHECK-NEXT: }
103+
104+
// CHECK: default argument 1 of O.init(p:q:)
105+
// CHECK-NEXT: sil hidden [ossa] @$s27stored_property_default_arg1OV1p1qACyxGx_x_SittcfcfA0_ : $@convention(thin) <T where T : ExpressibleByIntegerLiteral> () -> (@out T, Int) {
106+
// CHECK: bb0([[PARAM_0:.*]] : $*T):
107+
// CHECK-NEXT: function_ref variable initialization expression of O.q
108+
// CHECK-NEXT: [[O_Q_REF:%.*]] = function_ref @$s27stored_property_default_arg1OV1qx_Sitvpfi : $@convention(thin) <τ_0_0 where τ_0_0 : ExpressibleByIntegerLiteral> () -> (@out τ_0_0, Int)
109+
// CHECK-NEXT: [[O_Q:%.*]] = apply [[O_Q_REF]]<T>([[PARAM_0]]) : $@convention(thin) <τ_0_0 where τ_0_0 : ExpressibleByIntegerLiteral> () -> (@out τ_0_0, Int)
110+
// CHECK-NEXT: return [[O_Q]] : $Int
111+
// CHECK-NEXT: }
112+
113+
struct O<T: ExpressibleByIntegerLiteral> {
114+
var p: T = 0
115+
var q: (T, Int) = (0, 0)
116+
}
117+
118+
// CHECK-LABEL: sil hidden [ossa] @$s27stored_property_default_arg13checkIndirectyyF : $@convention(thin) () -> () {
119+
func checkIndirect() {
120+
// CHECK: function_ref default argument 0 of O.init(p:q:)
121+
// CHECK-NEXT: [[P1_REF:%.*]] = function_ref @$s27stored_property_default_arg1OV1p1qACyxGx_x_SittcfcfA_ : $@convention(thin) <τ_0_0 where τ_0_0 : ExpressibleByIntegerLiteral> () -> @out τ_0_0
122+
// CHECK-NEXT: [[TMP1:%.*]] = alloc_stack $Int
123+
// CHECK-NEXT: [[P1:%.*]] = apply [[P1_REF]]<Int>([[TMP1]]) : $@convention(thin) <τ_0_0 where τ_0_0 : ExpressibleByIntegerLiteral> () -> @out τ_0_0
124+
// CHECK: function_ref O.init(p:q:)
125+
// CHECK-NEXT: [[O1_REF:%.*]] = function_ref @$s27stored_property_default_arg1OV1p1qACyxGx_x_SittcfC : $@convention(method) <τ_0_0 where τ_0_0 : ExpressibleByIntegerLiteral> (@in τ_0_0, @in τ_0_0, Int, @thin O<τ_0_0>.Type) -> @out O<τ_0_0>
126+
// CHECK-NEXT: [[O1:%.*]] = apply [[O1_REF]]<Int>({{.*}}, {{.*}}, {{.*}}, {{.*}}, {{.*}}) : $@convention(method) <τ_0_0 where τ_0_0 : ExpressibleByIntegerLiteral> (@in τ_0_0, @in τ_0_0, Int, @thin O<τ_0_0>.Type) -> @out O<τ_0_0>
127+
let r = O(q: (128, 316))
128+
129+
// CHECK: function_ref default argument 1 of O.init(p:q:)
130+
// CHECK-NEXT: [[Q1_REF:%.*]] = function_ref @$s27stored_property_default_arg1OV1p1qACyxGx_x_SittcfcfA0_ : $@convention(thin) <τ_0_0 where τ_0_0 : ExpressibleByIntegerLiteral> () -> (@out τ_0_0, Int)
131+
// CHECK-NEXT: [[TMP2:%.*]] = alloc_stack $Int
132+
// CHECK-NEXT: [[Q1:%.*]] = apply [[Q1_REF]]<Int>([[TMP2]]) : $@convention(thin) <τ_0_0 where τ_0_0 : ExpressibleByIntegerLiteral> () -> (@out τ_0_0, Int)
133+
// CHECK: function_ref O.init(p:q:)
134+
// CHECK-NEXT: [[O2_REF:%.*]] = function_ref @$s27stored_property_default_arg1OV1p1qACyxGx_x_SittcfC : $@convention(method) <τ_0_0 where τ_0_0 : ExpressibleByIntegerLiteral> (@in τ_0_0, @in τ_0_0, Int, @thin O<τ_0_0>.Type) -> @out O<τ_0_0>
135+
// CHECK-NEXT: [[O2:%.*]] = apply [[O2_REF]]<Int>({{.*}}, {{.*}}, {{.*}}, {{.*}}, {{.*}}) : $@convention(method) <τ_0_0 where τ_0_0 : ExpressibleByIntegerLiteral> (@in τ_0_0, @in τ_0_0, Int, @thin O<τ_0_0>.Type) -> @out O<τ_0_0>
136+
let s = O(p: 316)
137+
}
138+
139+
// CHECK: default argument 0 of U.init(v:w:)
140+
// CHECK-NEXT: sil hidden [ossa] @$s27stored_property_default_arg1UV1v1wAcA1TCSg_AGtcfcfA_ : $@convention(thin) () -> @owned Optional<T> {
141+
// CHECK-NEXT: bb0:
142+
// CHECK-NEXT: function_ref variable initialization expression of U.v
143+
// CHECK-NEXT: [[U_V_REF:%.*]] = function_ref @$s27stored_property_default_arg1UV1vAA1TCSgvpfi : $@convention(thin) () -> @owned Optional<T>
144+
// CHECK-NEXT: [[U_V:%.*]] = apply [[U_V_REF]]() : $@convention(thin) () -> @owned Optional<T>
145+
// CHECK-NEXT: return [[U_V]] : $Optional<T>
146+
// CHECK-NEXT: }
147+
148+
// CHECK: default argument 1 of U.init(v:w:)
149+
// CHECK-NEXT: sil hidden [ossa] @$s27stored_property_default_arg1UV1v1wAcA1TCSg_AGtcfcfA0_ : $@convention(thin) () -> @owned T {
150+
// CHECK-NEXT: bb0:
151+
// CHECK-NEXT: function_ref variable initialization expression of U.w
152+
// CHECK-NEXT: [[U_W_REF:%.*]] = function_ref @$s27stored_property_default_arg1UV1wAA1TCvpfi : $@convention(thin) () -> @owned T
153+
// CHECK-NEXT: [[U_W:%.*]] = apply [[U_W_REF]]() : $@convention(thin) () -> @owned T
154+
// CHECK-NEXT: return [[U_W]] : $T
155+
// CHECK-NEXT: }
156+
157+
class T {}
158+
159+
struct U {
160+
weak var v = T()
161+
unowned var w = T()
162+
}
163+
164+
// CHECK-LABEL: sil hidden [ossa] @$s27stored_property_default_arg19checkReferenceTypesyyF : $@convention(thin) () -> () {
165+
func checkReferenceTypes() {
166+
// CHECK: function_ref default argument 0 of U.init(v:w:)
167+
// CHECK-NEXT: [[V1_REF:%.*]] = function_ref @$s27stored_property_default_arg1UV1v1wAcA1TCSg_AGtcfcfA_ : $@convention(thin) () -> @owned Optional<T>
168+
// CHECK-NEXT: [[V1:%.*]] = apply [[V1_REF]]() : $@convention(thin) () -> @owned Optional<T>
169+
// CHECK-NEXT: function_ref U.init(v:w:)
170+
// CHECK-NEXT: [[U1_REF:%.*]] = function_ref @$s27stored_property_default_arg1UV1v1wAcA1TCSg_AGtcfC : $@convention(method) (@owned Optional<T>, @owned T, @thin U.Type) -> @out U
171+
// CHECK-NEXT: [[U1:%.*]] = apply [[U1_REF]]({{.*}}, [[V1]], {{.*}}, {{.*}}) : $@convention(method) (@owned Optional<T>, @owned T, @thin U.Type) -> @out U
172+
let x = U(w: T())
173+
174+
// CHECK: function_ref default argument 1 of U.init(v:w:)
175+
// CHECK-NEXT: [[W1_REF:%.*]] = function_ref @$s27stored_property_default_arg1UV1v1wAcA1TCSg_AGtcfcfA0_ : $@convention(thin) () -> @owned T
176+
// CHECK-NEXT: [[W1:%.*]] = apply [[W1_REF]]() : $@convention(thin) () -> @owned T
177+
// CHECK-NEXT: function_ref U.init(v:w:)
178+
// CHECK-NEXT: [[U2_REF:%.*]] = function_ref @$s27stored_property_default_arg1UV1v1wAcA1TCSg_AGtcfC : $@convention(method) (@owned Optional<T>, @owned T, @thin U.Type) -> @out U
179+
// CHECK-NEXT: [[U2:%.*]] = apply [[U2_REF]]({{.*}}, {{.*}}, [[W1]], {{.*}}) : $@convention(method) (@owned Optional<T>, @owned T, @thin U.Type) -> @out U
180+
let y = U(v: T())
181+
}

0 commit comments

Comments
 (0)