@@ -72,10 +72,14 @@ func return_borrowed_fixed(_ t: borrowing Triangle) -> Triangle {
72
72
return copy t
73
73
}
74
74
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)
76
76
@_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
79
83
}
80
84
81
85
@_manualOwnership
@@ -172,24 +176,43 @@ func check_vars_fixed(_ t: Triangle, _ b: Bool) -> Triangle {
172
176
// FIXME: var's still have some issues
173
177
// (1) MandatoryRedundantLoadElimination introduces a 'copy_value' in place of a 'load [copy]' (rdar://161359163)
174
178
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
+ }
193
216
194
217
@_manualOwnership
195
218
public func basic_loop_trivial_values( _ t: Triangle , _ xs: [ Triangle ] ) {
0 commit comments