Skip to content

Commit 739417f

Browse files
committed
[move-only] Convert __shared to borrowing in move only tests.
These are the same semantically, just the mangling is slightly different. The benefit of doing this is that we are actually testing what we expect our users to do. rdar://108511703
1 parent 7e992ce commit 739417f

14 files changed

+442
-442
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: __shared MO) {}
45+
func takeConcrete(_ m: borrowing 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: __shared MO) {
74+
func testBasic(_ mo: borrowing 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: __shared MO, _ a: Any) {
142+
func checkCasting(_ b: any Box, _ mo: borrowing 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}}
@@ -220,7 +220,7 @@ func checkCasting(_ b: any Box, _ mo: __shared MO, _ a: Any) {
220220

221221
}
222222

223-
func checkStdlibTypes(_ mo: __shared MO) {
223+
func checkStdlibTypes(_ mo: borrowing MO) {
224224
let _: [MO] = // expected-error {{move-only type 'MO' cannot be used with generics yet}}
225225
[MO(), MO()]
226226
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: (__shared BufferView<Element>) -> U) -> U {
26+
public mutating func withBufferView<U>(_ f: (borrowing BufferView<Element>) -> U) -> U {
2727
return withUnsafeBufferPointer {
2828
return f(BufferView(ptr: $0))
2929
}

test/SILGen/moveonly.swift

Lines changed: 25 additions & 25 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 : __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) {}
50+
public func borrowVal(_ e : borrowing NonTrivialEnum) {}
51+
public func borrowVal(_ e : borrowing FD) {}
52+
public func borrowVal(_ k: borrowing CopyableKlass) {}
53+
public func borrowVal(_ k: borrowing NonTrivialCopyableStruct) {}
54+
public func borrowVal(_ k: borrowing NonTrivialCopyableStruct2) {}
55+
public func borrowVal(_ s: borrowing NonTrivialStruct) {}
56+
public func borrowVal(_ s: borrowing NonTrivialStruct2) {}
5757

5858
public func consumeVal(_ e : __owned NonTrivialEnum) {}
5959
public func consumeVal(_ e : __owned FD) {}
@@ -73,12 +73,12 @@ var bool: Bool { false }
7373
// Function Arguments
7474
//
7575

76-
// CHECK-LABEL: sil [ossa] @$s8moveonly19useNonTrivialStructyyAA0cdE0VhF : $@convention(thin) (@guaranteed NonTrivialStruct) -> () {
76+
// CHECK-LABEL: sil [ossa] @$s8moveonly19useNonTrivialStructyyAA0cdE0VF : $@convention(thin) (@guaranteed NonTrivialStruct) -> () {
7777
// CHECK: bb0([[ARG:%.*]] : @guaranteed $NonTrivialStruct):
7878
// CHECK: [[COPIED_ARG:%.*]] = copy_value [[ARG]]
7979
// CHECK: mark_must_check [no_consume_or_assign] [[COPIED_ARG]]
80-
// CHECK: } // end sil function '$s8moveonly19useNonTrivialStructyyAA0cdE0VhF'
81-
public func useNonTrivialStruct(_ s: __shared NonTrivialStruct) {
80+
// CHECK: } // end sil function '$s8moveonly19useNonTrivialStructyyAA0cdE0VF'
81+
public func useNonTrivialStruct(_ s: borrowing NonTrivialStruct) {
8282
borrowVal(s)
8383
let s2 = s
8484
let k = s.fd
@@ -103,12 +103,12 @@ public func useNonTrivialOwnedStruct(_ s: __owned NonTrivialStruct) {
103103
let _ = s2
104104
}
105105

106-
// CHECK-LABEL: sil [ossa] @$s8moveonly17useNonTrivialEnumyyAA0cdE0OhF : $@convention(thin) (@guaranteed NonTrivialEnum) -> () {
106+
// CHECK-LABEL: sil [ossa] @$s8moveonly17useNonTrivialEnumyyAA0cdE0OF : $@convention(thin) (@guaranteed NonTrivialEnum) -> () {
107107
// CHECK: bb0([[ARG:%.*]] : @guaranteed $NonTrivialEnum):
108108
// CHECK: [[COPIED_ARG:%.*]] = copy_value [[ARG]]
109109
// CHECK: mark_must_check [no_consume_or_assign] [[COPIED_ARG]]
110-
// CHECK: } // end sil function '$s8moveonly17useNonTrivialEnumyyAA0cdE0OhF'
111-
public func useNonTrivialEnum(_ s: __shared NonTrivialEnum) {
110+
// CHECK: } // end sil function '$s8moveonly17useNonTrivialEnumyyAA0cdE0OF'
111+
public func useNonTrivialEnum(_ s: borrowing NonTrivialEnum) {
112112
borrowVal(s)
113113
let s2 = s
114114
switch s {
@@ -288,7 +288,7 @@ func blackHoleVarInitialization3() {
288288
//
289289
// CHECK: [[CLS:%.*]] = mark_must_check [no_consume_or_assign] [[PROJECT]]
290290
// CHECK: [[BORROW:%.*]] = load_borrow [[CLS]]
291-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA2FDVhF :
291+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA2FDVF :
292292
// CHECK: apply [[FN]]([[BORROW]])
293293
// CHECK: end_borrow [[BORROW]]
294294
// CHECK: } // end sil function '$s8moveonly24borrowObjectFunctionCallyyF'
@@ -310,7 +310,7 @@ func borrowObjectFunctionCall() {
310310
// CHECK: [[ACCESS:%.*]] = begin_access [read] [unknown] [[PROJECT]]
311311
// CHECK: [[MARKED_ADDR:%.*]] = mark_must_check [no_consume_or_assign] [[ACCESS]]
312312
// CHECK: [[BORROW:%.*]] = load [copy] [[MARKED_ADDR]]
313-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA16NonTrivialStructVhF :
313+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA16NonTrivialStructVF :
314314
// CHECK: apply [[FN]]([[BORROW]])
315315
// CHECK: destroy_value [[BORROW]]
316316
// CHECK: end_access [[ACCESS]]
@@ -333,7 +333,7 @@ func moveOnlyStructNonConsumingUse() {
333333
// CHECK: [[MARKED_ADDR:%.*]] = mark_must_check [no_consume_or_assign] [[ACCESS]]
334334
// CHECK: [[GEP:%.*]] = struct_element_addr [[MARKED_ADDR]] : $*NonTrivialStruct, #NonTrivialStruct.nonTrivialStruct2
335335
// CHECK: [[BORROW:%.*]] = load [copy] [[GEP]]
336-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA17NonTrivialStruct2VhF : $@convention(thin) (@guaranteed NonTrivialStruct2) -> ()
336+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA17NonTrivialStruct2VF : $@convention(thin) (@guaranteed NonTrivialStruct2) -> ()
337337
// CHECK: apply [[FN]]([[BORROW]])
338338
// CHECK: destroy_value [[BORROW]]
339339
// CHECK: end_access [[ACCESS]]
@@ -358,7 +358,7 @@ func moveOnlyStructMoveOnlyStructNonConsumingUse() {
358358
// CHECK: [[GEP2:%.*]] = struct_element_addr [[GEP1]] : $*NonTrivialStruct2, #NonTrivialStruct2.copyableKlass
359359
// CHECK: [[COPY:%.*]] = load [copy] [[GEP2]] : $*CopyableKlass
360360
// CHECK: end_access [[ACCESS]]
361-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassChF : $@convention(thin) (@guaranteed CopyableKlass) -> ()
361+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassCF : $@convention(thin) (@guaranteed CopyableKlass) -> ()
362362
// CHECK: apply [[FN]]([[COPY]])
363363
// CHECK: destroy_value [[COPY]] : $CopyableKlass
364364
// CHECK: } // end sil function '$s8moveonly018moveOnlyStructMovecD28CopyableKlassNonConsumingUseyyF'
@@ -406,7 +406,7 @@ func moveOnlyStructSetMoveOnlyField() {
406406
// CHECK: [[GEP:%.*]] = struct_element_addr [[MARKED_ADDR]] : $*NonTrivialStruct, #NonTrivialStruct.nonTrivialCopyableStruct
407407
// CHECK: [[COPY:%.*]] = load [copy] [[GEP]] : $*NonTrivialCopyableStruct
408408
// CHECK: end_access [[ACCESS]]
409-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA24NonTrivialCopyableStructVhF :
409+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA24NonTrivialCopyableStructVF :
410410
// CHECK: apply [[FN]]([[COPY]])
411411
// CHECK: destroy_value [[COPY]] : $NonTrivialCopyableStruct
412412
// CHECK: } // end sil function '$s8moveonly022moveOnlyStructCopyableD15NonConsumingUseyyF'
@@ -430,7 +430,7 @@ func moveOnlyStructCopyableStructNonConsumingUse() {
430430
// CHECK: [[GEP2:%.*]] = struct_element_addr [[GEP1]] : $*NonTrivialCopyableStruct, #NonTrivialCopyableStruct.copyableKlass
431431
// CHECK: [[COPY:%.*]] = load [copy] [[GEP2]] : $*CopyableKlass
432432
// CHECK: end_access [[ACCESS]]
433-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassChF :
433+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassCF :
434434
// CHECK: apply [[FN]]([[COPY]])
435435
// CHECK: destroy_value [[COPY]] : $CopyableKlass
436436
// CHECK: } // end sil function '$s8moveonly022moveOnlyStructCopyabledE20KlassNonConsumingUseyyF'
@@ -454,7 +454,7 @@ func moveOnlyStructCopyableStructCopyableKlassNonConsumingUse() {
454454
// CHECK: [[GEP2:%.*]] = struct_element_addr [[GEP1]] : $*NonTrivialCopyableStruct, #NonTrivialCopyableStruct.nonTrivialCopyableStruct2
455455
// CHECK: [[COPY:%.*]] = load [copy] [[GEP2]] : $*NonTrivialCopyableStruct2
456456
// CHECK: end_access [[ACCESS]]
457-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA25NonTrivialCopyableStruct2VhF :
457+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA25NonTrivialCopyableStruct2VF :
458458
// CHECK: apply [[FN]]([[COPY]])
459459
// CHECK: destroy_value [[COPY]] : $NonTrivialCopyableStruct2
460460
// CHECK: } // end sil function '$s8moveonly022moveOnlyStructCopyabledeD15NonConsumingUseyyF'
@@ -479,7 +479,7 @@ func moveOnlyStructCopyableStructCopyableStructNonConsumingUse() {
479479
// CHECK: [[GEP3:%.*]] = struct_element_addr [[GEP2]] : $*NonTrivialCopyableStruct2, #NonTrivialCopyableStruct2.copyableKlass
480480
// CHECK: [[COPY:%.*]] = load [copy] [[GEP3]] : $*CopyableKlass
481481
// CHECK: end_access [[ACCESS]]
482-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassChF :
482+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA13CopyableKlassCF :
483483
// CHECK: apply [[FN]]([[COPY]])
484484
// CHECK: destroy_value [[COPY]] : $CopyableKlass
485485
// CHECK: } // end sil function '$s8moveonly022moveOnlyStructCopyablededE20KlassNonConsumingUseyyF'
@@ -511,7 +511,7 @@ func moveOnlyStructCopyableStructCopyableStructCopyableKlassNonConsumingUse() {
511511
// CHECK: [[ACCESS:%.*]] = begin_access [read] [dynamic] [[FIELD]]
512512
// CHECK: [[ACCESS_MARK:%.*]] = mark_must_check [no_consume_or_assign] [[ACCESS]]
513513
// CHECK: [[BORROWED_MOVEONLY_KLASS:%.*]] = load [copy] [[ACCESS_MARK]]
514-
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA2FDVhF :
514+
// CHECK: [[FN:%.*]] = function_ref @$s8moveonly9borrowValyyAA2FDVF :
515515
// CHECK: apply [[FN]]([[BORROWED_MOVEONLY_KLASS]])
516516
// CHECK: destroy_value [[BORROWED_MOVEONLY_KLASS]]
517517
// CHECK: destroy_value [[COPYABLE_KLASS]]
@@ -563,7 +563,7 @@ func consumeVal(_ e: __owned EnumSwitchTests.E2) {}
563563
var booleanGuard: Bool { false }
564564
var booleanGuard2: Bool { false }
565565

566-
// CHECK-LABEL: sil hidden [ossa] @$s8moveonly15enumSwitchTest1yyAA04EnumC5TestsO1EOhF : $@convention(thin) (@guaranteed EnumSwitchTests.E) -> () {
566+
// CHECK-LABEL: sil hidden [ossa] @$s8moveonly15enumSwitchTest1yyAA04EnumC5TestsO1EOF : $@convention(thin) (@guaranteed EnumSwitchTests.E) -> () {
567567
// CHECK: bb0([[ARG:%.*]] : @guaranteed
568568
// CHECK: [[COPY_ARG:%.*]] = copy_value [[ARG]]
569569
// CHECK: [[MARKED_VALUE:%.*]] = mark_must_check [no_consume_or_assign] [[COPY_ARG]]
@@ -620,8 +620,8 @@ var booleanGuard2: Bool { false }
620620
//
621621
// CHECK: [[BB_CONT]]:
622622
// CHECK: destroy_value [[MARKED_VALUE]]
623-
// CHECK: } // end sil function '$s8moveonly15enumSwitchTest1yyAA04EnumC5TestsO1EOhF'
624-
func enumSwitchTest1(_ e: __shared EnumSwitchTests.E) {
623+
// CHECK: } // end sil function '$s8moveonly15enumSwitchTest1yyAA04EnumC5TestsO1EOF'
624+
func enumSwitchTest1(_ e: borrowing EnumSwitchTests.E) {
625625
switch e {
626626
case .first:
627627
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 : __shared FD) {}
12+
public func borrowVal(_ e : borrowing 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: __shared Klass) {}
27+
public func nonConsumingUseKlass(_ k: borrowing Klass) {}
2828

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

0 commit comments

Comments
 (0)