@@ -179,3 +179,32 @@ func checkReferenceTypes() {
179179// CHECK-NEXT: [[U2:%.*]] = apply [[U2_REF]]({{.*}}, {{.*}}, [[W1]], {{.*}}) : $@convention(method) (@owned Optional<T>, @owned T, @thin U.Type) -> @out U
180180 let y = U ( v: T ( ) )
181181}
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