@@ -72,10 +72,14 @@ func return_borrowed_fixed(_ t: borrowing Triangle) -> Triangle {
7272 return copy t
7373}
7474
75- // FIXME: copy propagation isn't able to simplify this. No copy should be required. (rdar://161359163)
75+ // FIXME: there's no workaround to this; it acts like a var so it's the same class of problem (rdar://161359163)
7676@_manualOwnership
77- func return_consumingParam( _ t: consuming Triangle ) -> Triangle { // expected-error {{ownership of 't' is demanded and cannot not be consumed}}
78- return t
77+ func return_consumingParam( _ t: consuming Triangle ) -> Triangle {
78+ return t // expected-error {{ownership of 't' is demanded and cannot not be consumed}}
79+ }
80+ @_manualOwnership
81+ func return_consumingParam_no_workaround( _ t: consuming Triangle ) -> Triangle {
82+ return copy t
7983}
8084
8185@_manualOwnership
@@ -172,24 +176,43 @@ func check_vars_fixed(_ t: Triangle, _ b: Bool) -> Triangle {
172176// FIXME: var's still have some issues
173177// (1) MandatoryRedundantLoadElimination introduces a 'copy_value' in place of a 'load [copy]' (rdar://161359163)
174178
175- // @_manualOwnership
176- // func reassignments_0() -> Triangle {
177- // var t3 = Triangle()
178- // t3 = Triangle()
179- // return t3
180- // }
181- // @_manualOwnership
182- // func reassignments_1() {
183- // var t3 = Triangle()
184- // t3 = Triangle()
185- // t3.borrowing()
186- // }
187- // @_manualOwnership
188- // func ressignments_2() {
189- // var t3 = Triangle()
190- // t3 = Triangle()
191- // t3.consuming()
192- // }
179+ @_manualOwnership
180+ func reassignments_0( ) -> Triangle {
181+ var t3 = Triangle ( )
182+ t3 = Triangle ( )
183+ return t3 // expected-error {{ownership of 't3' is demanded}}
184+ }
185+ @_manualOwnership
186+ func reassignments_0_fixed_1( ) -> Triangle {
187+ var t3 = Triangle ( )
188+ t3 = Triangle ( )
189+ return copy t3
190+ }
191+ @_manualOwnership
192+ func reassignments_0_fixed_2( ) -> Triangle {
193+ var t3 = Triangle ( )
194+ t3 = Triangle ( )
195+ return consume t3
196+ }
197+
198+ @_manualOwnership
199+ func reassignments_1( ) {
200+ var t3 = Triangle ( )
201+ t3 = Triangle ( )
202+ t3. borrowing ( ) // expected-error {{accessing 't3' produces a copy of it}}
203+ }
204+ @_manualOwnership
205+ func reassignments_1_fixed_1( ) {
206+ var t3 = Triangle ( )
207+ t3 = Triangle ( )
208+ ( copy t3 ) . borrowing ( )
209+ }
210+ @_manualOwnership
211+ func reassignments_1_fixed_2( ) {
212+ var t3 = Triangle ( )
213+ t3 = Triangle ( )
214+ ( consume t3 ) . borrowing ( )
215+ }
193216
194217@_manualOwnership
195218public func basic_loop_trivial_values( _ t: Triangle , _ xs: [ Triangle ] ) {
0 commit comments