@@ -51,7 +51,7 @@ public func basic_return1() -> Triangle {
5151
5252@_manualOwnership
5353public func basic_return2( t: Triangle ) -> Triangle {
54- return t // expected-error {{ownership of 't' is demanded }}
54+ return t // expected-error {{independent copy of 't' is required here; write 'copy' to acknowledge or 'consume' to elide }}
5555}
5656@_manualOwnership
5757public func basic_return2_fixed( t: Triangle ) -> Triangle {
@@ -65,7 +65,7 @@ public func basic_return3() -> Triangle {
6565
6666@_manualOwnership
6767func return_borrowed( _ t: borrowing Triangle ) -> Triangle {
68- return t // expected-error {{ownership of 't' is demanded and cannot not be consumed }}
68+ return t // expected-error {{independent copy of 't' is required here; write 'copy' to acknowledge or 'consume' to elide }}
6969}
7070@_manualOwnership
7171func return_borrowed_fixed( _ t: borrowing Triangle ) -> Triangle {
@@ -75,7 +75,7 @@ func return_borrowed_fixed(_ t: borrowing Triangle) -> Triangle {
7575// FIXME: there's no workaround to this; it acts like a var so it's the same class of problem (rdar://161359163)
7676@_manualOwnership
7777func return_consumingParam( _ t: consuming Triangle ) -> Triangle {
78- return t // expected-error {{ownership of 't' is demanded and cannot not be consumed }}
78+ return t // expected-error {{independent copy of 't' is required here; write 'copy' to acknowledge or 'consume' to elide }}
7979}
8080@_manualOwnership
8181func return_consumingParam_no_workaround( _ t: consuming Triangle ) -> Triangle {
@@ -100,8 +100,8 @@ func renamed_return(_ cond: Bool, _ a: Triangle) -> Triangle {
100100 let b = a
101101 let c = b
102102 // FIXME: we say 'c' instead of 'b', because of the propagation. (rdar://161360537)
103- if cond { return b } // expected-error {{ownership of 'c' is demanded }}
104- return c // expected-error {{ownership of 'c' is demanded }}
103+ if cond { return b } // expected-error {{independent copy of 'c' is required }}
104+ return c // expected-error {{independent copy of 'c' is required }}
105105}
106106
107107@_manualOwnership
@@ -133,7 +133,7 @@ func basic_methods_borrowing(_ t1: Triangle) {
133133@_manualOwnership
134134func basic_methods_consuming( _ t1: Triangle ) {
135135 let t2 = Triangle ( )
136- t1. consuming ( ) // expected-error {{ownership of 't1' is demanded }}
136+ t1. consuming ( ) // expected-error {{independent copy of 't1' is required }}
137137 t2. consuming ( )
138138}
139139@_manualOwnership
@@ -153,7 +153,7 @@ func plainFunc(_ t0: Triangle) {}
153153
154154@_manualOwnership
155155func basic_function_call( _ t1: Triangle ) {
156- consumingFunc ( t1) // expected-error {{ownership of 't1' is demanded }}
156+ consumingFunc ( t1) // expected-error {{independent copy of 't1' is required }}
157157 consumingFunc ( copy t1 )
158158 plainFunc ( t1)
159159}
@@ -163,8 +163,8 @@ func basic_function_call(_ t1: Triangle) {
163163@_manualOwnership
164164func check_vars( _ t: Triangle , _ b: Bool ) -> Triangle {
165165 var x = Triangle ( )
166- if b { x = t } // expected-error {{ownership of 't' is demanded and cannot not be consumed }}
167- return x // expected-error {{ownership of 'x' is demanded and cannot not be consumed }}
166+ if b { x = t } // expected-error {{independent copy of 't' is required }}
167+ return x // expected-error {{independent copy of 'x' is required }}
168168}
169169@_manualOwnership
170170func check_vars_fixed( _ t: Triangle , _ b: Bool ) -> Triangle {
@@ -180,7 +180,7 @@ func check_vars_fixed(_ t: Triangle, _ b: Bool) -> Triangle {
180180func reassignments_0( ) -> Triangle {
181181 var t3 = Triangle ( )
182182 t3 = Triangle ( )
183- return t3 // expected-error {{ownership of 't3' is demanded }}
183+ return t3 // expected-error {{independent copy of 't3' is required }}
184184}
185185@_manualOwnership
186186func reassignments_0_fixed_1( ) -> Triangle {
@@ -199,7 +199,7 @@ func reassignments_0_fixed_2() -> Triangle {
199199func reassignments_1( ) {
200200 var t3 = Triangle ( )
201201 t3 = Triangle ( )
202- t3. borrowing ( ) // expected-error {{accessing 't3' produces a copy of it }}
202+ t3. borrowing ( ) // expected-error {{accessing 't3' may produce a copy; write 'copy' to acknowledge or 'consume' to elide }}
203203}
204204@_manualOwnership
205205func reassignments_1_fixed_1( ) {
@@ -217,7 +217,7 @@ func reassignments_1_fixed_2() {
217217@_manualOwnership
218218public func basic_loop_trivial_values( _ t: Triangle , _ xs: [ Triangle ] ) {
219219 var p : Pair = t. a
220- for x in xs { // expected-error {{ownership of 'xs' is demanded }}
220+ for x in xs { // expected-error {{independent copy of 'xs' is required }}
221221 p = p. midpoint ( x. a)
222222 }
223223 t. a = p
@@ -239,11 +239,11 @@ public func basic_loop_trivial_values_fixed(_ t: Triangle, _ xs: [Triangle]) {
239239
240240@_manualOwnership
241241public func basic_loop_nontrivial_values( _ t: Triangle , _ xs: [ Triangle ] ) {
242- var p : Pair = t. nontrivial. a // expected-error {{accessing 't.nontrivial' produces a copy of it }}
243- for x in xs { // expected-error {{ownership of 'xs' is demanded }}
244- p = p. midpoint ( x. nontrivial. a) // expected-error {{accessing 'x.nontrivial' produces a copy of it }}
242+ var p : Pair = t. nontrivial. a // expected-error {{accessing 't.nontrivial' may produce a copy}}
243+ for x in xs { // expected-error {{independent copy of 'xs' is required }}
244+ p = p. midpoint ( x. nontrivial. a) // expected-error {{accessing 'x.nontrivial' may produce a copy}}
245245 }
246- t. nontrivial. a = p // expected-error {{accessing 't.nontrivial' produces a copy of it }}
246+ t. nontrivial. a = p // expected-error {{accessing 't.nontrivial' may produce a copy}}
247247}
248248
249249@_manualOwnership
@@ -258,10 +258,10 @@ public func basic_loop_nontrivial_values_fixed(_ t: Triangle, _ xs: [Triangle])
258258@_manualOwnership
259259public func basic_loop_nontrivial_values_reduced_copies( _ t: Triangle , _ xs: [ Triangle ] ) {
260260 // FIXME: confusing variable names are chosen (rdar://161360537)
261- let nt = t. nontrivial // expected-error {{accessing 'nt' produces a copy of it }}
261+ let nt = t. nontrivial // expected-error {{accessing 'nt' may produce a copy}}
262262 var p : Pair = nt. a
263263 for x in copy xs {
264- let xnt = x. nontrivial // expected-error {{accessing 'xnt' produces a copy of it }}
264+ let xnt = x. nontrivial // expected-error {{accessing 'xnt' may produce a copy}}
265265 p = p. midpoint ( xnt. a)
266266 }
267267 nt. a = p
@@ -285,7 +285,7 @@ let ref_result = [5, 13, 29]
285285// are present to avoid exclusivity issues. We'd need to start generating read coroutines.
286286@_manualOwnership
287287func access_global_1( ) -> Int {
288- return ref_result [ 2 ] // expected-error {{accessing 'ref_result' produces a copy of it }}
288+ return ref_result [ 2 ] // expected-error {{accessing 'ref_result' may produce a copy}}
289289}
290290@_manualOwnership
291291func access_global_1_fixed( ) -> Int {
@@ -296,23 +296,23 @@ return (copy ref_result)[2]
296296
297297@_manualOwnership
298298func closure_basic( _ t: Triangle ) -> ( ) -> Triangle {
299- return { // expected-error {{ownership of 't' is demanded by a closure }}
300- return t // expected-error {{ownership of 't' is demanded and cannot not be consumed }}
299+ return { // expected-error {{closure capture of 't' requires independent copy of it; write [t = copy t] }}
300+ return t // expected-error {{independent copy of 't' is required }}
301301 }
302302}
303303@_manualOwnership
304304func closure_basic_almost_fixed_1( _ t: Triangle ) -> ( ) -> Triangle {
305305 // FIXME: Closure capture lists need to support the short-hand [copy t] that makes the
306306 // closure capture parameter @owned, rather than @guaranteed. Only can work for Copyable types!
307307 return { [ x = copy t] in
308- return x // expected-error {{ownership of 'x' is demanded and cannot not be consumed }}
308+ return x // expected-error {{independent copy of 'x' is required }}
309309 }
310310}
311311
312312@_manualOwnership
313- func closure_basic_almost_fixed_2( _ t : Triangle ) -> ( ) -> Triangle {
314- return { // expected-error {{ownership of 't' is demanded by a closure }}
315- return copy t
313+ func closure_basic_almost_fixed_2( _ x : Triangle ) -> ( ) -> Triangle {
314+ return { // expected-error {{closure capture of 'x' requires independent copy of it; write [x = copy x] }}
315+ return copy x
316316 }
317317}
318318
@@ -326,20 +326,20 @@ func closure_basic_fixed(_ t: Triangle) -> () -> Triangle {
326326@_manualOwnership
327327func closure_copies_in_body( _ t: Triangle ) -> ( ) -> Triangle {
328328 return { [ x = copy t] in
329- eat ( x) // expected-error {{ownership of 'x' is demanded and cannot not be consumed }}
329+ eat ( x) // expected-error {{independent copy of 'x' is required }}
330330 use ( x)
331- eat ( x) // expected-error {{ownership of 'x' is demanded and cannot not be consumed }}
332- return x // expected-error {{ownership of 'x' is demanded and cannot not be consumed }}
331+ eat ( x) // expected-error {{independent copy of 'x' is required }}
332+ return x // expected-error {{independent copy of 'x' is required }}
333333 }
334334}
335335
336336@_manualOwnership
337337func closure_copies_in_body_noescape( _ t: Triangle ) -> Triangle {
338338 let f = { [ x = copy t] in
339- eat ( x) // expected-error {{ownership of 'x' is demanded and cannot not be consumed }}
339+ eat ( x) // expected-error {{independent copy of 'x' is required }}
340340 use ( x)
341- eat ( x) // expected-error {{ownership of 'x' is demanded and cannot not be consumed }}
342- return x // expected-error {{ownership of 'x' is demanded and cannot not be consumed }}
341+ eat ( x) // expected-error {{independent copy of 'x' is required }}
342+ return x // expected-error {{independent copy of 'x' is required }}
343343 }
344344 return f ( )
345345}
@@ -355,7 +355,7 @@ func try_to_assert(_ n: Int, _ names: [String]) {
355355
356356@_manualOwnership
357357func copy_in_autoclosure( _ t: Triangle ) {
358- simple_assert ( consumingFunc ( t) ) // expected-error {{ownership of 't' is demanded and cannot not be consumed }}
358+ simple_assert ( consumingFunc ( t) ) // expected-error {{independent copy of 't' is required }}
359359}
360360@_manualOwnership
361361func copy_in_autoclosure_fixed( _ t: Triangle ) {
@@ -364,11 +364,11 @@ func copy_in_autoclosure_fixed(_ t: Triangle) {
364364
365365@_manualOwnership
366366func nested_closures( _ t: Triangle ) -> ( ) -> ( ( ) -> Triangle ) {
367- return { // expected-error {{ownership of 't' is demanded by a closure }}
368- { eat ( t) } ( ) // expected-error {{ownership of 't' is demanded and cannot not be consumed }}
369- return { // expected-error {{ownership of 't' is demanded by a closure }}
370- simple_assert ( consumingFunc ( t) ) // expected-error {{ownership of 't' is demanded and cannot not be consumed }}
371- return t // expected-error {{ownership of 't' is demanded and cannot not be consumed }}
367+ return { // expected-error {{closure capture of 't' requires independent copy of it; write [t = copy t] }}
368+ { eat ( t) } ( ) // expected-error {{independent copy of 't' is required }}
369+ return { // expected-error {{closure capture of 't' requires independent copy of it; write [t = copy t] }}
370+ simple_assert ( consumingFunc ( t) ) // expected-error {{independent copy of 't' is required }}
371+ return t // expected-error {{independent copy of 't' is required }}
372372 }
373373 }
374374}
@@ -387,7 +387,7 @@ func nested_closures_fixed(_ t: Triangle) -> () -> (() -> Triangle) {
387387
388388@_manualOwnership
389389func return_generic< T> ( _ t: T ) -> T {
390- return t // expected-error {{accessing 't' produces a copy}}
390+ return t // expected-error {{accessing 't' may produce a copy}}
391391}
392392@_manualOwnership
393393func return_generic_fixed< T> ( _ t: T ) -> T {
@@ -396,9 +396,9 @@ func return_generic_fixed<T>(_ t: T) -> T {
396396
397397@_manualOwnership
398398func reassign_with_lets< T> ( _ t: T ) -> T {
399- let x = t // expected-error {{accessing 't' produces a copy}}
400- let y = x // expected-error {{accessing 'x' produces a copy}}
401- let z = y // expected-error {{accessing 'y' produces a copy}}
399+ let x = t // expected-error {{accessing 't' may produce a copy}}
400+ let y = x // expected-error {{accessing 'x' may produce a copy}}
401+ let z = y // expected-error {{accessing 'y' may produce a copy}}
402402 return copy z
403403}
404404
@@ -413,9 +413,9 @@ func reassign_with_lets_fixed<T>(_ t: T) -> T {
413413
414414@_manualOwnership
415415func copy_generic< T> ( _ t: T ) {
416- consume_generic ( t) // expected-error {{accessing 't' produces a copy}}
416+ consume_generic ( t) // expected-error {{accessing 't' may produce a copy}}
417417 borrow_generic ( t)
418- consume_generic ( t) // expected-error {{accessing 't' produces a copy}}
418+ consume_generic ( t) // expected-error {{accessing 't' may produce a copy}}
419419}
420420
421421@_manualOwnership
@@ -429,10 +429,10 @@ func copy_generic_fixed<T>(_ t: T) {
429429func benchCaptureProp< S : Sequence > (
430430 _ s: S , _ f: ( S . Element , S . Element ) -> S . Element ) -> S . Element {
431431
432- var it = s. makeIterator ( ) // expected-error {{accessing 's' produces a copy}}
432+ var it = s. makeIterator ( ) // expected-error {{accessing 's' may produce a copy}}
433433 let initial = it. next ( ) !
434434 return
435- IteratorSequence ( it) // expected-error {{accessing 'it' produces a copy}}
435+ IteratorSequence ( it) // expected-error {{accessing 'it' may produce a copy}}
436436 . reduce ( initial, f)
437437}
438438@_manualOwnership
@@ -464,8 +464,8 @@ struct CollectionOf32BitLittleEndianIntegers<BaseCollection: Collection> where B
464464 @_manualOwnership
465465 init ( _ baseCollection: BaseCollection ) {
466466 precondition ( baseCollection. count % 4 == 0 )
467- self . baseCollection = baseCollection // expected-error {{accessing 'baseCollection' produces a copy}}
468- } // expected-error {{accessing 'self' produces a copy of it }}
467+ self . baseCollection = baseCollection // expected-error {{accessing 'baseCollection' may produce a copy}}
468+ } // expected-error {{accessing 'self' may produce a copy}}
469469
470470 // FIXME: the above initializer shouldn't have any diagnostics
471471}
0 commit comments