mirror of
https://github.com/apple/swift.git
synced 2026-10-14 15:51:20 +02:00
Tests require the compiler built with SwiftCompilerSources since a long time. So this lit feature was redundant anyway. We can remove it.
80 lines
1.7 KiB
Swift
80 lines
1.7 KiB
Swift
// RUN: %target-swift-frontend %s -emit-sil \
|
|
// RUN: -o /dev/null \
|
|
// RUN: -verify \
|
|
// RUN: -sil-verify-all \
|
|
// RUN: -enable-experimental-feature Lifetimes \
|
|
// RUN: -enable-experimental-feature SuppressedAssociatedTypesWithDefaults \
|
|
// RUN: -parse-stdlib -module-name Swift
|
|
|
|
// REQUIRES: swift_feature_Lifetimes
|
|
// REQUIRES: swift_feature_SuppressedAssociatedTypesWithDefaults
|
|
|
|
@_marker public protocol Escapable {}
|
|
|
|
@_silgen_name("imagineInt64")
|
|
func imagineInt64() -> Builtin.Int64
|
|
|
|
precedencegroup AssignmentPrecedence { assignment: true }
|
|
|
|
protocol P {
|
|
associatedtype E: ~Escapable
|
|
@_lifetime(borrow self)
|
|
borrowing func getE() -> E
|
|
}
|
|
|
|
extension P {
|
|
@_lifetime(borrow self)
|
|
borrowing func getDefault() -> E {
|
|
return getE()
|
|
}
|
|
}
|
|
|
|
public struct Bits {
|
|
var i = imagineInt64()
|
|
}
|
|
|
|
struct PBits: P {
|
|
func getE() -> Bits { return Bits() }
|
|
}
|
|
|
|
public func pbits_ret_concerete() -> Bits {
|
|
let pbits = PBits()
|
|
return pbits.getDefault()
|
|
}
|
|
|
|
struct NCInt: ~Copyable {
|
|
var value: Builtin.Int64
|
|
|
|
init(_ value: Builtin.Int64) { self.value = value }
|
|
}
|
|
|
|
struct NEInt: ~Escapable {
|
|
let value: Builtin.Int64
|
|
|
|
@_lifetime(borrow o)
|
|
init<O: ~Copyable & ~Escapable>(v: Builtin.Int64, o: borrowing O) {
|
|
self.value = v
|
|
}
|
|
|
|
// Test a generic storage owner.
|
|
@_lifetime(borrow borrowed)
|
|
init(borrowed: borrowing NCInt) {
|
|
self.init(v: borrowed.value, o: borrowed)
|
|
}
|
|
}
|
|
|
|
@_lifetime(copy ne)
|
|
public func consume_indirect<NE: ~Escapable>(ne: consuming NE) -> NE {
|
|
return ne
|
|
}
|
|
|
|
@_lifetime(copy ne)
|
|
public func copy_indirect<NE: ~Escapable>(ne: borrowing NE) -> NE {
|
|
return copy ne
|
|
}
|
|
|
|
@_lifetime(copy ne)
|
|
public func copy_inout<NE: ~Escapable>(ne: inout NE) -> NE {
|
|
return copy ne
|
|
}
|