@@ -179,3 +179,32 @@ func checkReferenceTypes() {
179
179
// CHECK-NEXT: [[U2:%.*]] = apply [[U2_REF]]({{.*}}, {{.*}}, [[W1]], {{.*}}) : $@convention(method) (@owned Optional<T>, @owned T, @thin U.Type) -> @out U
180
180
let y = U ( v: T ( ) )
181
181
}
182
+
183
+ // CHECK: default argument 0 of AA.init(ab:)
184
+ // CHECK-NEXT: sil hidden [ossa] @$s27stored_property_default_arg2AAV2abAcA1ZCSg2ac_AG2adt_tcfcfA_ : $@convention(thin) () -> (@owned Optional<Z>, @owned Optional<Z>) {
185
+ // CHECK-NEXT: bb0:
186
+ // CHECK-NEXT: function_ref variable initialization expression of AA.ab
187
+ // CHECK-NEXT: [[AA_AB_REF:%.*]] = function_ref @$s27stored_property_default_arg2AAV2abAA1ZCSg2ac_AG2adtvpfi : $@convention(thin) () -> (@owned Optional<Z>, @owned Optional<Z>)
188
+ // CHECK-NEXT: [[AA_AB:%.*]] = apply [[AA_AB_REF]]() : $@convention(thin) () -> (@owned Optional<Z>, @owned Optional<Z>)
189
+ // CHECK-NEXT: ([[ELT0:%.*]], [[ELT1:%.*]]) = destructure_tuple [[AA_AB]] : $(Optional<Z>, Optional<Z>)
190
+ // CHECK-NEXT: [[RETURN:%.*]] = tuple ([[ELT0]] : $Optional<Z>, [[ELT1]] : $Optional<Z>)
191
+ // CHECK-NEXT: return [[RETURN]] : $(Optional<Z>, Optional<Z>)
192
+ // CHECK-NEXT: }
193
+
194
+ class Z { }
195
+
196
+ struct AA {
197
+ var ab : ( ac: Z ? , ad: Z ? ) = ( ac: Z ( ) , ad: Z ( ) )
198
+ }
199
+
200
+ // CHECK-LABEL: sil hidden [ossa] @$s27stored_property_default_arg19checkReferenceTupleyyF : $@convention(thin) () -> () {
201
+ func checkReferenceTuple( ) {
202
+ // CHECK: function_ref default argument 0 of AA.init(ab:)
203
+ // CHECK-NEXT: [[AB1_REF:%.*]] = function_ref @$s27stored_property_default_arg2AAV2abAcA1ZCSg2ac_AG2adt_tcfcfA_ : $@convention(thin) () -> (@owned Optional<Z>, @owned Optional<Z>)
204
+ // CHECK-NEXT: [[AB1:%.*]] = apply [[AB1_REF]]() : $@convention(thin) () -> (@owned Optional<Z>, @owned Optional<Z>)
205
+ // CHECK-NEXT: ([[ELT0:%.*]], [[ELT1:%.*]]) = destructure_tuple [[AB1]] : $(Optional<Z>, Optional<Z>)
206
+ // CHECK-NEXT: function_ref AA.init(ab:)
207
+ // CHECK-NEXT: [[AA1_REF:%.*]] = function_ref @$s27stored_property_default_arg2AAV2abAcA1ZCSg2ac_AG2adt_tcfC : $@convention(method) (@owned Optional<Z>, @owned Optional<Z>, @thin AA.Type) -> @owned AA
208
+ // CHECK-NEXT: [[AA1:%.*]] = apply [[AA1_REF]]([[ELT0]], [[ELT1]], {{.*}}) : $@convention(method) (@owned Optional<Z>, @owned Optional<Z>, @thin AA.Type) -> @owned AA
209
+ let ae = AA . init ( ab: ) ( )
210
+ }
0 commit comments