Skip to content

Commit f41dd11

Browse files
committed
Remove @_unsafeNonescapableResult from unit tests.
1 parent a1fe258 commit f41dd11

7 files changed

+39
-20
lines changed

test/SILOptimizer/lifetime_dependence/lifetime_dependence_borrow_fail.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ struct BV : ~Escapable {
1212
let p: UnsafeRawPointer
1313
let i: Int
1414

15-
@_unsafeNonescapableResult
1615
init(_ p: UnsafeRawPointer, _ i: Int) -> dependsOn(p) Self {
1716
self.p = p
1817
self.i = i
@@ -36,7 +35,6 @@ struct NE : ~Escapable {
3635
let p: UnsafeRawPointer
3736
let i: Int
3837

39-
@_unsafeNonescapableResult
4038
init(_ p: UnsafeRawPointer, _ i: Int) -> dependsOn(p) Self {
4139
self.p = p
4240
self.i = i

test/SILOptimizer/lifetime_dependence/lifetime_dependence_inherit.swift

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@
88
// REQUIRES: asserts
99
// REQUIRES: swift_in_compiler
1010

11+
// TODO: Remove @_unsafeNonescapableResult. Instead, the unsafe dependence should be expressed by a builtin that is
12+
// hidden within the function body.
13+
@_unsafeNonescapableResult
14+
func unsafeLifetime<T: ~Copyable & ~Escapable, U: ~Copyable & ~Escapable>(
15+
dependent: consuming T, dependsOn source: borrowing U)
16+
-> dependsOn(source) T {
17+
dependent
18+
}
19+
1120
struct BV : ~Escapable {
1221
let p: UnsafeRawPointer
1322
let i: Int
@@ -17,16 +26,16 @@ struct BV : ~Escapable {
1726
self.i = i
1827
}
1928

20-
@_unsafeNonescapableResult
21-
init(independent p: UnsafeRawPointer, _ i: Int) {
29+
init(independent p: UnsafeRawPointer, _ i: Int) -> dependsOn(p) Self {
2230
self.p = p
2331
self.i = i
2432
}
2533

2634
consuming func derive() -> dependsOn(self) BV {
2735
// Technically, this "new" view does not depend on the 'view' argument.
2836
// This unsafely creates a new view with no dependence.
29-
return BV(independent: self.p, self.i)
37+
let bv = BV(independent: self.p, self.i)
38+
return unsafeLifetime(dependent: bv, dependsOn: self)
3039
}
3140
}
3241

test/SILOptimizer/lifetime_dependence/lifetime_dependence_inherit_fail.swift

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@
88
// REQUIRES: asserts
99
// REQUIRES: swift_in_compiler
1010

11+
// TODO: Remove @_unsafeNonescapableResult. Instead, the unsafe dependence should be expressed by a builtin that is
12+
// hidden within the function body.
13+
@_unsafeNonescapableResult
14+
func unsafeLifetime<T: ~Copyable & ~Escapable, U: ~Copyable & ~Escapable>(
15+
dependent: consuming T, dependsOn source: borrowing U)
16+
-> dependsOn(source) T {
17+
dependent
18+
}
19+
1120
struct BV : ~Escapable {
1221
let p: UnsafeRawPointer
1322
let i: Int
@@ -17,16 +26,16 @@ struct BV : ~Escapable {
1726
self.i = i
1827
}
1928

20-
@_unsafeNonescapableResult
21-
init(independent p: UnsafeRawPointer, _ i: Int) {
29+
init(independent p: UnsafeRawPointer, _ i: Int) -> dependsOn(p) Self {
2230
self.p = p
2331
self.i = i
2432
}
2533

2634
consuming func derive() -> dependsOn(self) BV {
2735
// Technically, this "new" view does not depend on the 'view' argument.
2836
// This unsafely creates a new view with no dependence.
29-
return BV(independent: self.p, self.i)
37+
let bv = BV(independent: self.p, self.i)
38+
return unsafeLifetime(dependent: bv, dependsOn: self)
3039
}
3140
}
3241

test/SILOptimizer/lifetime_dependence/lifetime_dependence_optional.swift

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@
1010
// Simply test that it is possible for a module to define a pseudo-Optional type without triggering any compiler errors.
1111

1212
public protocol ExpressibleByNilLiteral: ~Copyable & ~Escapable {
13-
// TODO: dependsOn(immortal)
14-
@_unsafeNonescapableResult
15-
init(nilLiteral: ())
13+
init(nilLiteral: ()) -> dependsOn(immortal) Self
1614
}
1715

1816
@frozen
@@ -30,10 +28,8 @@ extension Nillable: Sendable where Wrapped: ~Copyable & ~Escapable & Sendable {
3028
extension Nillable: BitwiseCopyable where Wrapped: BitwiseCopyable { }
3129

3230
extension Nillable: ExpressibleByNilLiteral where Wrapped: ~Copyable & ~Escapable {
33-
// TODO: dependsOn(immortal)
3431
@_transparent
35-
@_unsafeNonescapableResult
36-
public init(nilLiteral: ()) {
32+
public init(nilLiteral: ()) -> dependsOn(immortal) Self {
3733
self = .none
3834
}
3935
}

test/SILOptimizer/lifetime_dependence/lifetime_dependence_param.swift

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@
88
// REQUIRES: asserts
99
// REQUIRES: swift_in_compiler
1010

11+
// TODO: Remove @_unsafeNonescapableResult. Instead, the unsafe dependence should be expressed by a builtin that is
12+
// hidden within the function body.
13+
@_unsafeNonescapableResult
14+
func unsafeLifetime<T: ~Copyable & ~Escapable, U: ~Copyable & ~Escapable>(
15+
dependent: consuming T, dependsOn source: borrowing U)
16+
-> dependsOn(source) T {
17+
dependent
18+
}
19+
1120
struct BV : ~Escapable {
1221
let p: UnsafeRawPointer
1322
let i: Int
@@ -17,8 +26,7 @@ struct BV : ~Escapable {
1726
self.i = i
1827
}
1928

20-
@_unsafeNonescapableResult
21-
init(independent p: UnsafeRawPointer, _ i: Int) {
29+
init(independent p: UnsafeRawPointer, _ i: Int) -> dependsOn(p) Self {
2230
self.p = p
2331
self.i = i
2432
}
@@ -30,7 +38,8 @@ struct BV : ~Escapable {
3038
consuming func derive() -> dependsOn(self) BV {
3139
// Technically, this "new" view does not depend on the 'view' argument.
3240
// This unsafely creates a new view with no dependence.
33-
return BV(independent: self.p, self.i)
41+
let bv = BV(independent: self.p, self.i)
42+
return unsafeLifetime(dependent: bv, dependsOn: self)
3443
}
3544
}
3645

test/SILOptimizer/lifetime_dependence/lifetime_dependence_scope_fixup.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ struct NCContainer : ~Copyable {
1717
struct View : ~Escapable {
1818
let ptr: UnsafeRawBufferPointer
1919
let c: Int
20-
@_unsafeNonescapableResult
21-
init(_ ptr: UnsafeRawBufferPointer, _ c: Int) {
20+
init(_ ptr: UnsafeRawBufferPointer, _ c: Int) -> dependsOn(p) Self {
2221
self.ptr = ptr
2322
self.c = c
2423
}

test/SILOptimizer/lifetime_dependence/lifetime_dependence_todo.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ struct BV : ~Escapable {
1414
let p: UnsafeRawPointer
1515
let i: Int
1616

17-
@_unsafeNonescapableResult
1817
init(_ p: UnsafeRawPointer, _ i: Int) -> dependsOn(p) Self {
1918
self.p = p
2019
self.i = i

0 commit comments

Comments
 (0)