mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
37 lines
1.0 KiB
Swift
37 lines
1.0 KiB
Swift
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) %s -module-name UserModule -strict-memory-safety
|
|
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface) -module-name UserModule
|
|
// RUN: %FileCheck %s < %t.swiftinterface
|
|
|
|
// CHECK: @unsafe public func getIntUnsafely() -> Swift.Int
|
|
@unsafe public func getIntUnsafely() -> Int { 0 }
|
|
|
|
public struct UnsafeIterator: @unsafe IteratorProtocol {
|
|
@unsafe public mutating func next() -> Int? { nil }
|
|
}
|
|
|
|
public struct SequenceWithUnsafeIterator: Sequence {
|
|
public init() { }
|
|
public func makeIterator() -> UnsafeIterator { UnsafeIterator() }
|
|
}
|
|
|
|
// CHECK: @inlinable public func useUnsafeCode()
|
|
@inlinable public func useUnsafeCode() {
|
|
// CHECK-NOT: unsafe
|
|
print( unsafe getIntUnsafely())
|
|
|
|
for unsafe _ in SequenceWithUnsafeIterator() {
|
|
_ = unsafe getIntUnsafely()
|
|
}
|
|
}
|
|
|
|
// CHECK: public protocol P
|
|
public protocol P {
|
|
func f()
|
|
}
|
|
|
|
// CHECK: public struct X : @unsafe UserModule.P
|
|
public struct X: @unsafe P {
|
|
// CHECK: @unsafe public func f()
|
|
@unsafe public func f() { }
|
|
}
|