Skip to content

Commit c948f3c

Browse files
committed
add ownership to tests using noncopyable parameters
1 parent 197a976 commit c948f3c

11 files changed

+392
-392
lines changed

test/Constraints/moveonly_constraints.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ enum Maybe<T> {
4242
case just(T)
4343
}
4444

45-
func takeConcrete(_ m: MO) {}
45+
func takeConcrete(_ m: __shared MO) {}
4646
func takeGeneric<T>(_ t: T) {}
4747
func takeGenericSendable<T>(_ t: T) where T: Sendable {}
4848
func takeMaybe<T>(_ m: Maybe<T>) {}
@@ -71,7 +71,7 @@ func testAny() {
7171
takeAny(MO()) // expected-error {{move-only type 'MO' cannot be used with generics yet}}
7272
}
7373

74-
func testBasic(_ mo: MO) {
74+
func testBasic(_ mo: __shared MO) {
7575
takeConcrete(globalMO)
7676
takeConcrete(MO())
7777

@@ -139,7 +139,7 @@ func checkMethodCalls() {
139139
takeMaybe(true ? .none : .just(MO())) // expected-error 3{{move-only type 'MO' cannot be used with generics yet}}
140140
}
141141

142-
func checkCasting(_ b: any Box, _ mo: MO, _ a: Any) {
142+
func checkCasting(_ b: any Box, _ mo: __shared MO, _ a: Any) {
143143
// casting dynamically is allowed, but should always fail since you can't
144144
// construct such a type.
145145
let box = b as! ValBox<MO> // expected-error {{move-only type 'MO' cannot be used with generics yet}}
@@ -221,7 +221,7 @@ func checkCasting(_ b: any Box, _ mo: MO, _ a: Any) {
221221

222222
}
223223

224-
func checkStdlibTypes(_ mo: MO) {
224+
func checkStdlibTypes(_ mo: __shared MO) {
225225
let _: [MO] = // expected-error {{move-only type 'MO' cannot be used with generics yet}}
226226
[MO(), MO()]
227227
let _: [MO] = // expected-error {{move-only type 'MO' cannot be used with generics yet}}

test/Interpreter/moveonly_bufferview.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public struct BufferView<T> {
2323
}
2424

2525
extension Array {
26-
public mutating func withBufferView<U>(_ f: (BufferView<Element>) -> U) -> U {
26+
public mutating func withBufferView<U>(_ f: (__shared BufferView<Element>) -> U) -> U {
2727
return withUnsafeBufferPointer {
2828
return f(BufferView(ptr: $0))
2929
}

test/SILGen/moveonly.swift

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ public enum NonTrivialEnum {
4747
var varGlobal = NonTrivialStruct()
4848
let letGlobal = NonTrivialStruct()
4949

50-
public func borrowVal(_ e : NonTrivialEnum) {}
51-
public func borrowVal(_ e : FD) {}
52-
public func borrowVal(_ k: CopyableKlass) {}
53-
public func borrowVal(_ k: NonTrivialCopyableStruct) {}
54-
public func borrowVal(_ k: NonTrivialCopyableStruct2) {}
55-
public func borrowVal(_ s: NonTrivialStruct) {}
56-
public func borrowVal(_ s: NonTrivialStruct2) {}
50+
public func borrowVal(_ e : __shared NonTrivialEnum) {}
51+
public func borrowVal(_ e : __shared FD) {}
52+
public func borrowVal(_ k: __shared CopyableKlass) {}
53+
public func borrowVal(_ k: __shared NonTrivialCopyableStruct) {}
54+
public func borrowVal(_ k: __shared NonTrivialCopyableStruct2) {}
55+
public func borrowVal(_ s: __shared NonTrivialStruct) {}
56+
public func borrowVal(_ s: __shared NonTrivialStruct2) {}
5757

5858
public func consumeVal(_ e : __owned NonTrivialEnum) {}
5959
public func consumeVal(_ e : __owned FD) {}
@@ -71,12 +71,12 @@ public func consumeVal(_ s: __owned NonTrivialStruct2) {}
7171
// Function Arguments
7272
//
7373

74-
// CHECK-LABEL: sil [ossa] @$s8moveonly19useNonTrivialStructyyAA0cdE0VF : $@convention(thin) (@guaranteed NonTrivialStruct) -> () {
74+
// CHECK-LABEL: sil [ossa] @$s8moveonly19useNonTrivialStructyyAA0cdE0VhF : $@convention(thin) (@guaranteed NonTrivialStruct) -> () {
7575
// CHECK: bb0([[ARG:%.*]] : @guaranteed $NonTrivialStruct):
7676
// CHECK: [[COPIED_ARG:%.*]] = copy_value [[ARG]]
7777
// CHECK: mark_must_check [no_consume_or_assign] [[COPIED_ARG]]
78-
// CHECK: } // end sil function '$s8moveonly19useNonTrivialStructyyAA0cdE0VF'
79-
public func useNonTrivialStruct(_ s: NonTrivialStruct) {
78+
// CHECK: } // end sil function '$s8moveonly19useNonTrivialStructyyAA0cdE0VhF'
79+
public func useNonTrivialStruct(_ s: __shared NonTrivialStruct) {
8080
borrowVal(s)
8181
let s2 = s
8282
let k = s.fd
@@ -99,12 +99,12 @@ public func useNonTrivialOwnedStruct(_ s: __owned NonTrivialStruct) {
9999
let _ = s2
100100
}
101101

102-
// CHECK-LABEL: sil [ossa] @$s8moveonly17useNonTrivialEnumyyAA0cdE0OF : $@convention(thin) (@guaranteed NonTrivialEnum) -> () {
102+
// CHECK-LABEL: sil [ossa] @$s8moveonly17useNonTrivialEnumyyAA0cdE0OhF : $@convention(thin) (@guaranteed NonTrivialEnum) -> () {
103103
// CHECK: bb0([[ARG:%.*]] : @guaranteed $NonTrivialEnum):
104104
// CHECK: [[COPIED_ARG:%.*]] = copy_value [[ARG]]
105105
// CHECK: mark_must_check [no_consume_or_assign] [[COPIED_ARG]]
106-
// CHECK: } // end sil function '$s8moveonly17useNonTrivialEnumyyAA0cdE0OF'
107-
public func useNonTrivialEnum(_ s: NonTrivialEnum) {
106+
// CHECK: } // end sil function '$s8moveonly17useNonTrivialEnumyyAA0cdE0OhF'
107+
public func useNonTrivialEnum(_ s: __shared NonTrivialEnum) {
108108
borrowVal(s)
109109
let s2 = s
110110
switch s {
@@ -256,7 +256,7 @@ func blackHoleVarInitialization3() {
256256
// CHECK-LABEL: sil hidden [ossa] @$s8moveonly24borrowObjectFunctionCallyyF : $@convention(thin) () -> () {
257257
// CHECK: [[CLS:%.*]] = mark_must_check [consumable_and_assignable]
258258
// CHECK: [[BORROW:%.*]] = begin_borrow [[CLS]]
259-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA2FDVF :
259+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA2FDVhF :
260260
// CHECK: apply [[FN]]([[BORROW]])
261261
// CHECK: end_borrow [[BORROW]]
262262
// CHECK: } // end sil function '$s8moveonly24borrowObjectFunctionCallyyF'
@@ -269,7 +269,7 @@ func borrowObjectFunctionCall() {
269269
// CHECK: [[MARKED_ADDR:%.*]] = mark_must_check [consumable_and_assignable]
270270
// CHECK: [[ACCESS:%.*]] = begin_access [read] [unknown] [[MARKED_ADDR]]
271271
// CHECK: [[BORROW:%.*]] = load_borrow [[ACCESS]]
272-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA16NonTrivialStructVF :
272+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA16NonTrivialStructVhF :
273273
// CHECK: apply [[FN]]([[BORROW]])
274274
// CHECK: end_borrow [[BORROW]]
275275
// CHECK: end_access [[ACCESS]]
@@ -285,7 +285,7 @@ func moveOnlyStructNonConsumingUse() {
285285
// CHECK: [[ACCESS:%.*]] = begin_access [read] [unknown] [[MARKED_ADDR]]
286286
// CHECK: [[GEP:%.*]] = struct_element_addr [[ACCESS]] : $*NonTrivialStruct, #NonTrivialStruct.nonTrivialStruct2
287287
// CHECK: [[BORROW:%.*]] = load_borrow [[GEP]]
288-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA17NonTrivialStruct2VF : $@convention(thin) (@guaranteed NonTrivialStruct2) -> ()
288+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA17NonTrivialStruct2VhF : $@convention(thin) (@guaranteed NonTrivialStruct2) -> ()
289289
// CHECK: apply [[FN]]([[BORROW]])
290290
// CHECK: end_borrow [[BORROW]]
291291
// CHECK: end_access [[ACCESS]]
@@ -302,7 +302,7 @@ func moveOnlyStructMoveOnlyStructNonConsumingUse() {
302302
// CHECK: [[GEP1:%.*]] = struct_element_addr [[ACCESS]] : $*NonTrivialStruct, #NonTrivialStruct.nonTrivialStruct2
303303
// CHECK: [[GEP2:%.*]] = struct_element_addr [[GEP1]] : $*NonTrivialStruct2, #NonTrivialStruct2.copyableKlass
304304
// CHECK: [[BORROW:%.*]] = load_borrow [[GEP2]]
305-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassCF : $@convention(thin) (@guaranteed CopyableKlass) -> ()
305+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassChF : $@convention(thin) (@guaranteed CopyableKlass) -> ()
306306
// CHECK: apply [[FN]]([[BORROW]])
307307
// CHECK: end_borrow [[BORROW]]
308308
// CHECK: end_access [[ACCESS]]
@@ -318,7 +318,7 @@ func moveOnlyStructMoveOnlyStructCopyableKlassNonConsumingUse() {
318318
// CHECK: [[ACCESS:%.*]] = begin_access [read] [unknown] [[MARKED_ADDR]]
319319
// CHECK: [[GEP:%.*]] = struct_element_addr [[ACCESS]] : $*NonTrivialStruct, #NonTrivialStruct.copyableKlass
320320
// CHECK: [[BORROW:%.*]] = load_borrow [[GEP]]
321-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassCF : $@convention(thin) (@guaranteed CopyableKlass) -> ()
321+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassChF : $@convention(thin) (@guaranteed CopyableKlass) -> ()
322322
// CHECK: apply [[FN]]([[BORROW]])
323323
// CHECK: end_borrow [[BORROW]]
324324
// CHECK: end_access [[ACCESS]]
@@ -334,7 +334,7 @@ func moveOnlyStructCopyableKlassNonConsumingUse() {
334334
// CHECK: [[ACCESS:%.*]] = begin_access [read] [unknown] [[MARKED_ADDR]]
335335
// CHECK: [[GEP:%.*]] = struct_element_addr [[ACCESS]] : $*NonTrivialStruct, #NonTrivialStruct.nonTrivialCopyableStruct
336336
// CHECK: [[BORROW:%.*]] = load_borrow [[GEP]]
337-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA24NonTrivialCopyableStructVF :
337+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA24NonTrivialCopyableStructVhF :
338338
// CHECK: apply [[FN]]([[BORROW]])
339339
// CHECK: end_borrow [[BORROW]]
340340
// CHECK: end_access [[ACCESS]]
@@ -351,7 +351,7 @@ func moveOnlyStructCopyableStructNonConsumingUse() {
351351
// CHECK: [[GEP1:%.*]] = struct_element_addr [[ACCESS]] : $*NonTrivialStruct, #NonTrivialStruct.nonTrivialCopyableStruct
352352
// CHECK: [[GEP2:%.*]] = struct_element_addr [[GEP1]] : $*NonTrivialCopyableStruct, #NonTrivialCopyableStruct.copyableKlass
353353
// CHECK: [[BORROW:%.*]] = load_borrow [[GEP2]]
354-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassCF :
354+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassChF :
355355
// CHECK: apply [[FN]]([[BORROW]])
356356
// CHECK: end_borrow [[BORROW]]
357357
// CHECK: end_access [[ACCESS]]
@@ -368,7 +368,7 @@ func moveOnlyStructCopyableStructCopyableKlassNonConsumingUse() {
368368
// CHECK: [[GEP1:%.*]] = struct_element_addr [[ACCESS]] : $*NonTrivialStruct, #NonTrivialStruct.nonTrivialCopyableStruct
369369
// CHECK: [[GEP2:%.*]] = struct_element_addr [[GEP1]] : $*NonTrivialCopyableStruct, #NonTrivialCopyableStruct.nonTrivialCopyableStruct2
370370
// CHECK: [[BORROW:%.*]] = load_borrow [[GEP2]]
371-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA25NonTrivialCopyableStruct2VF :
371+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA25NonTrivialCopyableStruct2VhF :
372372
// CHECK: apply [[FN]]([[BORROW]])
373373
// CHECK: end_borrow [[BORROW]]
374374
// CHECK: end_access [[ACCESS]]
@@ -386,7 +386,7 @@ func moveOnlyStructCopyableStructCopyableStructNonConsumingUse() {
386386
// CHECK: [[GEP2:%.*]] = struct_element_addr [[GEP1]] : $*NonTrivialCopyableStruct, #NonTrivialCopyableStruct.nonTrivialCopyableStruct2
387387
// CHECK: [[GEP3:%.*]] = struct_element_addr [[GEP2]] : $*NonTrivialCopyableStruct2, #NonTrivialCopyableStruct2.copyableKlass
388388
// CHECK: [[BORROW:%.*]] = load_borrow [[GEP3]]
389-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassCF :
389+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassChF :
390390
// CHECK: apply [[FN]]([[BORROW]])
391391
// CHECK: end_borrow [[BORROW]]
392392
// CHECK: end_access [[ACCESS]]
@@ -412,7 +412,7 @@ func moveOnlyStructCopyableStructCopyableStructCopyableKlassNonConsumingUse() {
412412
// CHECK: [[FIELD_MARK:%.*]] = mark_must_check [no_consume_or_assign] [[FIELD]]
413413
// CHECK: [[ACCESS:%.*]] = begin_access [read] [dynamic] [[FIELD_MARK]]
414414
// CHECK: [[BORROWED_MOVEONLY_KLASS:%.*]] = load_borrow [[ACCESS]]
415-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA2FDVF :
415+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA2FDVhF :
416416
// CHECK: apply [[FN]]([[BORROWED_MOVEONLY_KLASS]])
417417
// CHECK: end_borrow [[BORROWED_MOVEONLY_KLASS]]
418418
// CHECK: destroy_value [[COPYABLE_KLASS]]
@@ -448,7 +448,7 @@ func consumeVal(_ e: __owned EnumSwitchTests.E2) {}
448448
var booleanGuard: Bool { false }
449449
var booleanGuard2: Bool { false }
450450

451-
// CHECK-LABEL: sil hidden [ossa] @$s8moveonly15enumSwitchTest1yyAA04EnumC5TestsO1EOF : $@convention(thin) (@guaranteed EnumSwitchTests.E) -> () {
451+
// CHECK-LABEL: sil hidden [ossa] @$s8moveonly15enumSwitchTest1yyAA04EnumC5TestsO1EOhF : $@convention(thin) (@guaranteed EnumSwitchTests.E) -> () {
452452
// CHECK: bb0([[ARG:%.*]] : @guaranteed
453453
// CHECK: [[COPY_ARG:%.*]] = copy_value [[ARG]]
454454
// CHECK: [[MARKED_VALUE:%.*]] = mark_must_check [no_consume_or_assign] [[COPY_ARG]]
@@ -499,8 +499,8 @@ var booleanGuard2: Bool { false }
499499
//
500500
// CHECK: [[BB_CONT]]:
501501
// CHECK: destroy_value [[MARKED_VALUE]]
502-
// CHECK: } // end sil function '$s8moveonly15enumSwitchTest1yyAA04EnumC5TestsO1EOF'
503-
func enumSwitchTest1(_ e: EnumSwitchTests.E) {
502+
// CHECK: } // end sil function '$s8moveonly15enumSwitchTest1yyAA04EnumC5TestsO1EOhF'
503+
func enumSwitchTest1(_ e: __shared EnumSwitchTests.E) {
504504
switch e {
505505
case .first:
506506
break

test/SILGen/moveonly_deinit_access.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public struct FD {
99
var i = 5
1010
}
1111

12-
public func borrowVal(_ e : FD) {}
12+
public func borrowVal(_ e : __shared FD) {}
1313
public func consumeVal(_ s: __owned FD) {}
1414

1515
// CHECK: sil hidden [ossa] @$s22moveonly_deinit_access0B17AccessConsumeTestyyAA2FDVzF : $@convention(thin) (@inout FD) -> () {

test/SILGen/moveonly_var.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public class Klass {
2424
}
2525
}
2626

27-
public func nonConsumingUseKlass(_ k: Klass) {}
27+
public func nonConsumingUseKlass(_ k: __shared Klass) {}
2828

2929
///////////
3030
// Tests //

0 commit comments

Comments
 (0)