mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
If we have an internal function with a `_specialize` attribute that has a `targetFunction:` parameter we want the function to appear in the .swiftinterface file such that the exported specialization can be picked up by the compiler.
30 lines
1.2 KiB
Swift
30 lines
1.2 KiB
Swift
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) %s -module-name attrs
|
|
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface) -module-name attrs
|
|
// RUN: %FileCheck %s < %t.swiftinterface
|
|
|
|
// CHECK: @_transparent public func glass() -> Swift.Int { return 0 }{{$}}
|
|
@_transparent public func glass() -> Int { return 0 }
|
|
|
|
// CHECK: @_effects(readnone) public func illiterate(){{$}}
|
|
@_effects(readnone) public func illiterate() {}
|
|
|
|
// CHECK: @_effects(notEscaping arg1.**) public func escapeEffects(arg1: Swift.Int){{$}}
|
|
@_effects(notEscaping arg1.**) public func escapeEffects(arg1: Int) {}
|
|
|
|
// CHECK-LABEL: @frozen public struct Point {
|
|
@frozen public struct Point {
|
|
// CHECK-NEXT: public var x: Swift.Int
|
|
public var x: Int
|
|
// CHECK-NEXT: public var y: Swift.Int
|
|
public var y: Int
|
|
} // CHECK-NEXT: {{^}$}}
|
|
|
|
public func someGenericFunction<T>(_ t: T) -> Int { return 0 }
|
|
|
|
// CHECK: @_specialize(exported: true, kind: full, target: someGenericFunction(_:), where T == Swift.Int)
|
|
// CHECK: internal func __specialize_someGenericFunction<T>(_ t: T)
|
|
@_specialize(exported: true, target: someGenericFunction(_:), where T == Int)
|
|
internal func __specialize_someGenericFunction<T>(_ t: T) -> Int {
|
|
fatalError("don't call")
|
|
}
|