mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
10.50 was once greater than any real macOS version, but now it compares less than real released versions, which makes these tests depend on the deployment target unnecessarily. Update these tests to use even larger numbers to hopefully keep them independent a little longer.
151 lines
4.0 KiB
Swift
151 lines
4.0 KiB
Swift
@frozen
|
|
public struct SomeData {
|
|
public init() {}
|
|
}
|
|
|
|
public final class SomeClass: Sendable {
|
|
public init() {}
|
|
}
|
|
|
|
@_specialize(exported: true, where T == Int)
|
|
@_specialize(exported: true, where T == Double)
|
|
@_specialize(exported: true, where @_noMetadata T : _Class)
|
|
@_specialize(exported: true, where @_noMetadata T : _BridgeObject)
|
|
@_specialize(exported: true, where @_noMetadata T : _Trivial(64))
|
|
@_specialize(exported: true, where @_noMetadata T : _TrivialStride(96))
|
|
@_specialize(exported: true, availability: macOS 50, *; where T == SomeData)
|
|
public func publicPrespecialized<T>(_ t: T) {
|
|
}
|
|
|
|
@_specialize(exported: true, where @_noMetadata T : _Class)
|
|
public func publicPrespecializedWithMarkerProtocol<T: Sendable>(_ t: T) -> T {
|
|
return t
|
|
}
|
|
|
|
@_specialize(exported: true, where T == Int)
|
|
@_specialize(exported: true, where @_noMetadata T : _Class)
|
|
@_specialize(exported: true, availability: macOS 50, *; where T == SomeData)
|
|
@inlinable
|
|
@inline(never)
|
|
public func publicPrespecialized2<T>(_ t: T) { }
|
|
|
|
@_specialize(exported: true, where T == Int)
|
|
@_specialize(exported: true, where @_noMetadata T : _Class)
|
|
@_specialize(exported: true, availability: macOS 50, *; where T == SomeData)
|
|
@inlinable
|
|
@inline(never)
|
|
public func publicPrespecializedThrows<T>(_ t: T) throws -> T { return t }
|
|
|
|
@_specialize(exported: true, where T == Int)
|
|
@_specialize(exported: true, where T == Double)
|
|
@_specialize(exported: true, where @_noMetadata T : _Class)
|
|
@_alwaysEmitIntoClient
|
|
@inline(never)
|
|
internal func internalEmitIntoClientPrespecialized<T>(_ t: T) {
|
|
}
|
|
|
|
@inlinable
|
|
public func useInternalEmitIntoClientPrespecialized<T>(_ t: T) {
|
|
internalEmitIntoClientPrespecialized(t)
|
|
}
|
|
|
|
@inlinable
|
|
public func publicInlineable<T>(_ t: T) {
|
|
}
|
|
|
|
public struct ResilientThing {
|
|
public init() {}
|
|
}
|
|
|
|
@usableFromInline
|
|
@frozen
|
|
internal struct InternalThing2<T> {
|
|
@usableFromInline
|
|
var x : T
|
|
|
|
@usableFromInline
|
|
init(_ t: T) {
|
|
x = t
|
|
}
|
|
|
|
@_specialize(exported: true, where T == Int)
|
|
@_specialize(exported: true, where @_noMetadata T : _Class)
|
|
@inlinable
|
|
func compute() -> T {
|
|
return x
|
|
}
|
|
|
|
@inlinable
|
|
var computedX : T {
|
|
@_specialize(exported: true, where T == Int)
|
|
@_specialize(exported: true, where @_noMetadata T : _Class)
|
|
get {
|
|
return x
|
|
}
|
|
}
|
|
|
|
@inlinable
|
|
var computedY : T {
|
|
@_specialize(exported: true, where T == Int)
|
|
@_specialize(exported: true, where @_noMetadata T : _Class)
|
|
get {
|
|
return x
|
|
}
|
|
@_specialize(exported: true, where T == Int)
|
|
@_specialize(exported: true, where @_noMetadata T : _Class)
|
|
set {
|
|
x = newValue
|
|
}
|
|
}
|
|
|
|
@inlinable
|
|
var computedZ : T {
|
|
@_specialize(exported: true, where T == Int)
|
|
@_specialize(exported: true, where @_noMetadata T : _Class)
|
|
_modify {
|
|
yield &x
|
|
}
|
|
@_specialize(exported: true, where T == Int)
|
|
@_specialize(exported: true, where @_noMetadata T : _Class)
|
|
_read {
|
|
yield x
|
|
}
|
|
}
|
|
@inlinable
|
|
subscript(_ i: Int) -> T {
|
|
@_specialize(exported: true, where T == Int)
|
|
@_specialize(exported: true, where @_noMetadata T : _Class)
|
|
get {
|
|
return x
|
|
}
|
|
@_specialize(exported: true, where T == Int)
|
|
@_specialize(exported: true, where @_noMetadata T : _Class)
|
|
set {
|
|
}
|
|
}
|
|
}
|
|
|
|
@inlinable
|
|
public func useInternalThing<T>(_ t: T) {
|
|
var x = InternalThing2(t)
|
|
print(x.compute())
|
|
print(x.computedX)
|
|
x.computedY = t
|
|
print(x.computedY)
|
|
x.computedZ = t
|
|
print(x.computedZ)
|
|
x[1] = t
|
|
print(x[1])
|
|
}
|
|
|
|
@_specialize(exported: true, where @_noMetadata T : _Class, @_noMetadata V : _Class)
|
|
@_specialize(exported: true, where @_noMetadata T : _BridgeObject, @_noMetadata V : _BridgeObject)
|
|
public func publicPresepcializedMultipleIndirectResults<T, V>(_ t: T, _ v: V, _ x: Int64) -> (V, Int64, T) {
|
|
return (v, x, t)
|
|
}
|
|
|
|
@_specialize(exported: true, where @_noMetadata T : _Class, @_noMetadata V : _Class)
|
|
public func publicPresepcializedMultipleIndirectResultsWithMarkerProtocol<T: Sendable, V>(_ t: T, _ v: V, _ x: Int64) -> (V, Int64, T) {
|
|
return (v, x, t)
|
|
}
|