mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
573 lines
24 KiB
Swift
573 lines
24 KiB
Swift
// RUN: %empty-directory(%t)
|
|
|
|
// Check skipped function bodies are neither typechecked nor SILgen'd when the
|
|
// -experimental-skip-*-function-bodies-* flags are specified.
|
|
// RUN: %target-swift-frontend -emit-sil -target %target-swift-5.10-abi-triple %s > %t/NoSkip.sil
|
|
// RUN: %target-swift-frontend -emit-sil -experimental-skip-non-inlinable-function-bodies -debug-forbid-typecheck-prefix NEVERTYPECHECK -debug-forbid-typecheck-prefix INLINENOTYPECHECK %s > %t/Skip.noninlinable.sil
|
|
// RUN: %target-swift-frontend -emit-sil -target %target-swift-5.10-abi-triple -experimental-skip-non-inlinable-function-bodies-without-types -debug-forbid-typecheck-prefix NEVERTYPECHECK %s > %t/Skip.withouttypes.sil
|
|
|
|
// RUN: %FileCheck %s --check-prefixes CHECK,CHECK-SIL-NO-SKIP --input-file %t/NoSkip.sil
|
|
// RUN: %FileCheck %s --check-prefixes CHECK,CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES,CHECK-SIL-SKIP-NONINLINE --input-file %t/Skip.noninlinable.sil
|
|
// RUN: %FileCheck %s --check-prefixes CHECK,CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES,CHECK-SIL-SKIP-WITHOUTTYPES --input-file %t/Skip.withouttypes.sil
|
|
|
|
// RUN: %target-swift-frontend -emit-sil -experimental-skip-all-function-bodies -debug-forbid-typecheck-prefix NEVERTYPECHECK -debug-forbid-typecheck-prefix INLINENOTYPECHECK -debug-forbid-typecheck-prefix ALLNOTYPECHECK %s > %t/Skip.all.sil
|
|
// RUN: %FileCheck %s --check-prefixes CHECK,CHECK-SIL-SKIP-ALL --input-file %t/Skip.all.sil
|
|
|
|
// Emit module interfaces and check their contents, too.
|
|
// RUN: %target-swift-emit-module-interface(%t/Skip.noninlinable.swiftinterface) %s -target %target-swift-5.10-abi-triple -module-name Skip -experimental-skip-non-inlinable-function-bodies
|
|
// RUN: %target-swift-typecheck-module-from-interface(%t/Skip.noninlinable.swiftinterface) -module-name Skip
|
|
// RUN: %FileCheck %s --check-prefixes CHECK,CHECK-TEXTUAL --input-file %t/Skip.noninlinable.swiftinterface
|
|
// RUN: %target-swift-emit-module-interface(%t/Skip.all.swiftinterface) %s -target %target-swift-5.10-abi-triple -module-name Skip -experimental-skip-all-function-bodies
|
|
// RUN: %target-swift-typecheck-module-from-interface(%t/Skip.all.swiftinterface) -module-name Skip
|
|
// RUN: %FileCheck %s --check-prefixes CHECK,CHECK-TEXTUAL --input-file %t/Skip.all.swiftinterface
|
|
|
|
// Verify that the emitted interfaces match an interface emitted without any
|
|
// body skipping flags.
|
|
// RUN: %target-swift-emit-module-interface(%t/NoSkip.swiftinterface) %s -target %target-swift-5.10-abi-triple -module-name Skip
|
|
// RUN: %FileCheck %s --check-prefixes CHECK,CHECK-TEXTUAL --input-file %t/NoSkip.swiftinterface
|
|
// RUN: diff -u %t/Skip.noninlinable.swiftinterface %t/NoSkip.swiftinterface
|
|
// RUN: diff -u %t/Skip.all.swiftinterface %t/NoSkip.swiftinterface
|
|
|
|
// Skipping all function bodies should skip *all* SIL.
|
|
// CHECK-SIL-SKIP-ALL: sil_stage canonical
|
|
// CHECK-SIL-SKIP-ALL-NOT: string_literal utf8
|
|
// CHECK-SIL-SKIP-ALL-NOT: sil_global
|
|
// CHECK-SIL-SKIP-ALL-NOT: sil_vtable
|
|
// CHECK-SIL-SKIP-ALL-NOT: sil_property
|
|
|
|
@usableFromInline
|
|
@inline(never)
|
|
func _blackHole(_ s: String) {}
|
|
|
|
@_fixed_layout
|
|
public class DeinitAlwaysInline {
|
|
@inline(__always) deinit {
|
|
let NEVERTYPECHECK_local = "DeinitAlwaysInline.deinit()"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "DeinitAlwaysInline.deinit()"
|
|
// CHECK-SIL-NO-SKIP: "DeinitAlwaysInline.deinit()"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "DeinitAlwaysInline.deinit()"
|
|
|
|
@_fixed_layout
|
|
public class DeinitInlinable {
|
|
@inlinable deinit {
|
|
let ALLNOTYPECHECK_local = "DeinitInlinable.deinit()"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
}
|
|
}
|
|
// CHECK-TEXTUAL: "DeinitInlinable.deinit()"
|
|
// CHECK-SIL-NO-SKIP: "DeinitInlinable.deinit()"
|
|
// CHECK-SIL-SKIP-NONINLINE: "DeinitInlinable.deinit()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "DeinitInlinable.deinit()"
|
|
|
|
public class DeinitNormal {
|
|
deinit {
|
|
let NEVERTYPECHECK_local = "DeinitNormal.deinit()"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "DeinitNormal.deinit()"
|
|
// CHECK-SIL-NO-SKIP: "DeinitNormal.deinit()"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "DeinitNormal.deinit()"
|
|
|
|
@inline(__always) public func funcAlwaysInline() {
|
|
let NEVERTYPECHECK_local = "funcAlwaysInline()"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "funcAlwaysInline()"
|
|
// CHECK-SIL-NO-SKIP: "funcAlwaysInline()"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "funcAlwaysInline()"
|
|
|
|
@inlinable public func funcInlinable() {
|
|
let ALLNOTYPECHECK_local = "funcInlinable()"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL: "funcInlinable()"
|
|
// CHECK-SIL-NO-SKIP: "funcInlinable()"
|
|
// CHECK-SIL-SKIP-NONINLINE: "funcInlinable()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcInlinable()"
|
|
|
|
@inlinable public func funcInlinableWithDefer() {
|
|
defer {
|
|
let ALLNOTYPECHECK_local = "funcInlinableWithDefer()"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
}
|
|
_ = 1
|
|
}
|
|
// CHECK-TEXTUAL: "funcInlinableWithDefer()"
|
|
// CHECK-SIL-NO-SKIP: "funcInlinableWithDefer()"
|
|
// CHECK-SIL-SKIP-NONINLINE: "funcInlinableWithDefer()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcInlinableWithDefer()"
|
|
|
|
@inlinable public func funcInlinableWithNestedFuncAndTypealias() {
|
|
let ALLNOTYPECHECK_outerLocal = "funcInlinableWithNestedFuncAndTypealias()"
|
|
_blackHole(ALLNOTYPECHECK_outerLocal)
|
|
|
|
typealias LocalType = Int
|
|
func takesLocalType(_ x: LocalType) {
|
|
let ALLNOTYPECHECK_innerLocal = "funcInlinableWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
_blackHole(ALLNOTYPECHECK_innerLocal)
|
|
}
|
|
takesLocalType(0)
|
|
}
|
|
// CHECK-TEXTUAL: "funcInlinableWithNestedFuncAndTypealias()"
|
|
// CHECK-SIL-NO-SKIP: "funcInlinableWithNestedFuncAndTypealias()"
|
|
// CHECK-SIL-SKIP-NONINLINE: "funcInlinableWithNestedFuncAndTypealias()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcInlinableWithNestedFuncAndTypealias()"
|
|
|
|
// CHECK-TEXTUAL: "funcInlinableWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
// CHECK-SIL-NO-SKIP: "funcInlinableWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
// CHECK-SIL-SKIP-NONINLINE: "funcInlinableWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcInlinableWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
|
|
func funcInternal() {
|
|
let NEVERTYPECHECK_local = "funcInternal()"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "funcInternal()"
|
|
// CHECK-SIL-NO-SKIP: "funcInternal()"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "funcInternal()"
|
|
|
|
func funcPrivate() {
|
|
let NEVERTYPECHECK_local = "funcPrivate()"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "funcPrivate()"
|
|
// CHECK-SIL-NO-SKIP: "funcPrivate()"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "funcPrivate()"
|
|
|
|
func funcPublic() {
|
|
let NEVERTYPECHECK_local = "funcPublic()"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "funcPublic()"
|
|
// CHECK-SIL-NO-SKIP: "funcPublic()"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "funcPublic()"
|
|
|
|
func funcPublicWithDefer() {
|
|
defer {
|
|
let NEVERTYPECHECK_local = "funcPublicWithDefer()"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
_ = 1
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "funcPublicWithDefer()"
|
|
// CHECK-SIL-NO-SKIP: "funcPublicWithDefer()"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "funcPublicWithDefer()"
|
|
|
|
public func funcPublicWithNestedFuncAndTypealias() {
|
|
let INLINENOTYPECHECK_outerLocal = "funcPublicWithNestedFuncAndTypealias()"
|
|
_blackHole(INLINENOTYPECHECK_outerLocal)
|
|
|
|
typealias LocalType = Int
|
|
func takesLocalType(_ x: LocalType) {
|
|
let INLINENOTYPECHECK_innerLocal = "funcPublicWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
_blackHole(INLINENOTYPECHECK_innerLocal)
|
|
}
|
|
takesLocalType(0)
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "funcPublicWithNestedFuncAndTypealias()"
|
|
// CHECK-SIL-NO-SKIP: "funcPublicWithNestedFuncAndTypealias()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcPublicWithNestedFuncAndTypealias()"
|
|
// CHECK-SIL-SKIP-NONINLINE-NOT: "funcPublicWithNestedFuncAndTypealias()"
|
|
|
|
// CHECK-TEXTUAL-NOT: "funcPublicWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
// CHECK-SIL-NO-SKIP: "funcPublicWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "funcPublicWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
|
|
public func funcPublicWithNestedTypeClass() {
|
|
let INLINENOTYPECHECK_local = "funcPublicWithNestedTypeClass()"
|
|
_blackHole(INLINENOTYPECHECK_local)
|
|
class C {}
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "funcPublicWithNestedTypeClass()"
|
|
// CHECK-SIL-NO-SKIP: "funcPublicWithNestedTypeClass()"
|
|
// CHECK-SIL-SKIP-NONINLINE-NOT: "funcPublicWithNestedTypeClass()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcPublicWithNestedTypeClass()"
|
|
|
|
public func funcPublicWithNestedTypeEnum() {
|
|
let INLINENOTYPECHECK_local = "funcPublicWithNestedTypeEnum()"
|
|
_blackHole(INLINENOTYPECHECK_local)
|
|
enum E {}
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "funcPublicWithNestedTypeEnum()"
|
|
// CHECK-SIL-NO-SKIP: "funcPublicWithNestedTypeEnum()"
|
|
// CHECK-SIL-SKIP-NONINLINE-NOT: "funcPublicWithNestedTypeEnum()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcPublicWithNestedTypeEnum()"
|
|
|
|
public func funcPublicWithNestedTypealias() {
|
|
let INLINENOTYPECHECK_local = "funcPublicWithNestedTypealias()"
|
|
_blackHole(INLINENOTYPECHECK_local)
|
|
typealias TA = Int
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "funcPublicWithNestedTypealias()"
|
|
// CHECK-SIL-NO-SKIP: "funcPublicWithNestedTypealias()"
|
|
// CHECK-SIL-SKIP-NONINLINE-NOT: "funcPublicWithNestedTypealias()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcPublicWithNestedTypealias()"
|
|
|
|
public func funcPublicWithNestedTypeActor() {
|
|
let INLINENOTYPECHECK_local = "funcPublicWithNestedTypeActor()"
|
|
_blackHole(INLINENOTYPECHECK_local)
|
|
actor A {}
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "funcPublicWithNestedTypeActor()"
|
|
// CHECK-SIL-NO-SKIP: "funcPublicWithNestedTypeActor()"
|
|
// CHECK-SIL-SKIP-NONINLINE-NOT: "funcPublicWithNestedTypeActor()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcPublicWithNestedTypeActor()"
|
|
|
|
public func funcPublicWithNestedTypeProtocol() {
|
|
let INLINENOTYPECHECK_local = "funcPublicWithNestedTypeProtocol()"
|
|
_blackHole(INLINENOTYPECHECK_local)
|
|
protocol P {}
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "funcPublicWithNestedTypeProtocol()"
|
|
// CHECK-SIL-NO-SKIP: "funcPublicWithNestedTypeProtocol()"
|
|
// CHECK-SIL-SKIP-NONINLINE-NOT: "funcPublicWithNestedTypeProtocol()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcPublicWithNestedTypeProtocol()"
|
|
|
|
public func funcPublicWithNestedTypeStruct() {
|
|
let INLINENOTYPECHECK_local = "funcPublicWithNestedTypeStruct()"
|
|
_blackHole(INLINENOTYPECHECK_local)
|
|
struct S {}
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "funcPublicWithNestedTypeStruct()"
|
|
// CHECK-SIL-NO-SKIP: "funcPublicWithNestedTypeStruct()"
|
|
// CHECK-SIL-SKIP-NONINLINE-NOT: "funcPublicWithNestedTypeStruct()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcPublicWithNestedTypeStruct()"
|
|
|
|
public func funcPublicWithNestedTypeStructInNestedFunc() {
|
|
let INLINENOTYPECHECK_local = "funcPublicWithNestedTypeStructInNestedFunc()"
|
|
_blackHole(INLINENOTYPECHECK_local)
|
|
|
|
func noType() {
|
|
let NEVERTYPECHECK_innerLocal = "funcPublicWithNestedTypeStructInNestedFunc()@noType()"
|
|
_blackHole(NEVERTYPECHECK_innerLocal)
|
|
}
|
|
|
|
func type() {
|
|
let INLINENOTYPECHECK_innerLocal = "funcPublicWithNestedTypeStructInNestedFunc()@type()"
|
|
_blackHole(INLINENOTYPECHECK_innerLocal)
|
|
struct S {}
|
|
}
|
|
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "funcPublicWithNestedTypeStructInNestedFunc()"
|
|
// CHECK-SIL-NO-SKIP: "funcPublicWithNestedTypeStructInNestedFunc()"
|
|
// CHECK-SIL-SKIP-NONINLINE-NOT: "funcPublicWithNestedTypeStructInNestedFunc()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcPublicWithNestedTypeStructInNestedFunc()"
|
|
|
|
// CHECK-TEXTUAL-NOT: "funcPublicWithNestedTypeStructInNestedFunc()@noType()"
|
|
// CHECK-SIL-NO-SKIP: "funcPublicWithNestedTypeStructInNestedFunc()@noType()"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "funcPublicWithNestedTypeStructInNestedFunc()@noType()"
|
|
|
|
// CHECK-TEXTUAL-NOT: "funcPublicWithNestedTypeStructInNestedFunc()@type()"
|
|
// CHECK-SIL-NO-SKIP: "funcPublicWithNestedTypeStructInNestedFunc()@type()"
|
|
// CHECK-SIL-SKIP-NONINLINE-NOT: "funcPublicWithNestedTypeStructInNestedFunc()@type()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcPublicWithNestedTypeStructInNestedFunc()@type()"
|
|
|
|
@_transparent public func funcTransparent() {
|
|
let ALLNOTYPECHECK_local = "funcTransparent()"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL: "funcTransparent()"
|
|
// CHECK-SIL-NO-SKIP: "funcTransparent()"
|
|
// CHECK-SIL-SKIP-NONINLINE: "funcTransparent()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcTransparent()"
|
|
|
|
@_transparent public func funcTransparentWithNestedFuncAndTypealias() {
|
|
let ALLNOTYPECHECK_outerLocal = "funcTransparentWithNestedFuncAndTypealias()"
|
|
_blackHole(ALLNOTYPECHECK_outerLocal)
|
|
|
|
typealias LocalType = Int
|
|
func takesLocalType(_ x: LocalType) {
|
|
let ALLNOTYPECHECK_innerLocal = "funcTransparentWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
_blackHole(ALLNOTYPECHECK_innerLocal)
|
|
}
|
|
takesLocalType(0)
|
|
}
|
|
// CHECK-TEXTUAL: "funcTransparentWithNestedFuncAndTypealias()"
|
|
// CHECK-SIL-NO-SKIP: "funcTransparentWithNestedFuncAndTypealias()"
|
|
// CHECK-SIL-SKIP-NONINLINE: "funcTransparentWithNestedFuncAndTypealias()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcTransparentWithNestedFuncAndTypealias()"
|
|
|
|
// CHECK-TEXTUAL: "funcTransparentWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
// CHECK-SIL-NO-SKIP: "funcTransparentWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
// CHECK-SIL-SKIP-NONINLINE: "funcTransparentWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "funcTransparentWithNestedFuncAndTypealias()@takesLocalType(_:)"
|
|
|
|
public struct Struct {
|
|
public var didSetVar: Int = 1 {
|
|
didSet {
|
|
// This body is always typechecked.
|
|
_blackHole("Struct.didSetVar.didSet")
|
|
}
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.didSetVar.didSet"
|
|
// CHECK-SIL-NO-SKIP: "Struct.didSetVar.didSet"
|
|
// CHECK-SIL-SKIP-NONINLINE: "Struct.didSetVar.didSet"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "Struct.didSetVar.didSet"
|
|
|
|
@inlinable public init(inlinable: Int) {
|
|
let ALLNOTYPECHECK_local = "Struct.init(inlinable:)"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL: "Struct.init(inlinable:)"
|
|
// CHECK-SIL-NO-SKIP: "Struct.init(inlinable:)"
|
|
// CHECK-SIL-SKIP-NONINLINE: "Struct.init(inlinable:)"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "Struct.init(inlinable:)"
|
|
|
|
@inline(__always) public init(inlineAlways: Int) {
|
|
let NEVERTYPECHECK_local = "Struct.init(inlineAlways:)"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.init(inlineAlways:)"
|
|
// CHECK-SIL-NO-SKIP: "Struct.init(inlineAlways:)"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.init(inlineAlways:)"
|
|
|
|
init(internal: Int) {
|
|
let NEVERTYPECHECK_local = "Struct.init(internal:)"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.init(internal:)"
|
|
// CHECK-SIL-NO-SKIP: "Struct.init(internal:)"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.init(internal:)"
|
|
|
|
private init(private: Int) {
|
|
let NEVERTYPECHECK_local = "Struct.init(private:)"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.init(private:)"
|
|
// CHECK-SIL-NO-SKIP: "Struct.init(private:)"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.init(private:)"
|
|
|
|
public init(public: Int) {
|
|
let NEVERTYPECHECK_local = "Struct.init(public:)"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.init(public:)"
|
|
// CHECK-SIL-NO-SKIP: "Struct.init(public:)"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.init(public:)"
|
|
|
|
@_transparent public init(transparent: Int) {
|
|
let ALLNOTYPECHECK_local = "Struct.init(transparent:)"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL: "Struct.init(transparent:)"
|
|
// CHECK-SIL-NO-SKIP: "Struct.init(transparent:)"
|
|
// CHECK-SIL-SKIP-NONINLINE: "Struct.init(transparent:)"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "Struct.init(transparent:)"
|
|
|
|
@inlinable public func inlinableFunc() {
|
|
let ALLNOTYPECHECK_local = "Struct.inlinableFunc()"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL: "Struct.inlinableFunc()"
|
|
// CHECK-SIL-NO-SKIP: "Struct.inlinableFunc()"
|
|
// CHECK-SIL-SKIP-NONINLINE: "Struct.inlinableFunc()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "Struct.inlinableFunc()"
|
|
|
|
@inline(__always)
|
|
public func inlineAlwaysFunc() {
|
|
let NEVERTYPECHECK_local = "Struct.inlineAlwaysFunc()"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.inlineAlwaysFunc()"
|
|
// CHECK-SIL-NO-SKIP: "Struct.inlineAlwaysFunc()"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.inlineAlwaysFunc()"
|
|
|
|
public var inlineAlwaysSetter: Int {
|
|
get { 0 }
|
|
@inline(__always) set {
|
|
let NEVERTYPECHECK_local = "Struct.inlineAlwaysSetter.setter"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.inlineAlwaysSetter.setter"
|
|
// CHECK-SIL-NO-SKIP: "Struct.inlineAlwaysSetter.setter"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.inlineAlwaysSetter.setter"
|
|
|
|
@inline(__always) public var inlineAlwaysVar: Int {
|
|
let NEVERTYPECHECK_local = "Struct.inlineAlwaysVar.getter"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
return 0
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.inlineAlwaysVar.getter"
|
|
// CHECK-SIL-NO-SKIP: "Struct.inlineAlwaysVar.getter"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.inlineAlwaysVar.getter"
|
|
|
|
func internalFunc() {
|
|
let NEVERTYPECHECK_local = "Struct.internalFunc()"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.internalFunc()"
|
|
// CHECK-SIL-NO-SKIP: "Struct.internalFunc()"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.internalFunc()"
|
|
|
|
private func privateFunc() {
|
|
let NEVERTYPECHECK_local = "Struct.privateFunc()"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.privateFunc()"
|
|
// CHECK-SIL-NO-SKIP: "Struct.privateFunc()"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.privateFunc()"
|
|
|
|
public func publicFunc() {
|
|
let NEVERTYPECHECK_local = "Struct.publicFunc()"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.publicFunc()"
|
|
// CHECK-SIL-NO-SKIP: "Struct.publicFunc()"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.publicFunc()"
|
|
|
|
@inlinable public subscript(inlinable: Int) -> Int {
|
|
let ALLNOTYPECHECK_local = "Struct.subscript(inlinable:)"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
return 0
|
|
}
|
|
// CHECK-TEXTUAL: "Struct.subscript(inlinable:)"
|
|
// CHECK-SIL-NO-SKIP: "Struct.subscript(inlinable:)"
|
|
// CHECK-SIL-SKIP-NONINLINE: "Struct.subscript(inlinable:)"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "Struct.subscript(inlinable:)"
|
|
|
|
@inline(__always) public subscript(inlineAlways: Int, _ x: Int) -> Int {
|
|
let NEVERTYPECHECK_local = "Struct.subscript(inlineAlways:_:)"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
return 0
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.subscript(inlineAlways:_:)"
|
|
// CHECK-SIL-NO-SKIP: "Struct.subscript(inlineAlways:_:)"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.subscript(inlineAlways:_:)"
|
|
|
|
subscript(internal: Int, _ x: Int, _ y: Int, _ z: Int) -> Int {
|
|
let NEVERTYPECHECK_local = "Struct.subscript(internal:_:_:_:)"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
return 0
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.subscript(internal:_:_:_:)"
|
|
// CHECK-SIL-NO-SKIP: "Struct.subscript(internal:_:_:_:)"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.subscript(internal:_:_:_:)"
|
|
|
|
private subscript(private: Int, _ x: Int, _ y: Int, _ z: Int, _ zz: Int, _ zzz: Int) -> Int {
|
|
let NEVERTYPECHECK_local = "Struct.subscript(private:_:_:_:_:_:)"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
return 0
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.subscript(private:_:_:_:_:_:)"
|
|
// CHECK-SIL-NO-SKIP: "Struct.subscript(private:_:_:_:_:_:)"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.subscript(private:_:_:_:_:_:)"
|
|
|
|
public subscript(public: Int, _ x: Int, _ y: Int, _ z: Int, _ zz: Int) -> Int {
|
|
let NEVERTYPECHECK_local = "Struct.subscript(public:_:_:_:_:)"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
return 0
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.subscript(public:_:_:_:_:)"
|
|
// CHECK-SIL-NO-SKIP: "Struct.subscript(public:_:_:_:_:)"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.subscript(public:_:_:_:_:)"
|
|
|
|
public subscript(transparent: Int, _ x: Int, _ y: Int) -> Int {
|
|
@_transparent get {
|
|
let ALLNOTYPECHECK_local = "Struct.subscript(transparent:_:_:)"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
return 0
|
|
}
|
|
}
|
|
// CHECK-TEXTUAL: "Struct.subscript(transparent:_:_:)"
|
|
// CHECK-SIL-NO-SKIP: "Struct.subscript(transparent:_:_:)"
|
|
// CHECK-SIL-SKIP-NONINLINE: "Struct.subscript(transparent:_:_:)"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "Struct.subscript(transparent:_:_:)"
|
|
|
|
@_transparent public func transparentFunc() {
|
|
let ALLNOTYPECHECK_local = "Struct.transparentFunc()"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
}
|
|
// CHECK-TEXTUAL: "Struct.transparentFunc()"
|
|
// CHECK-SIL-NO-SKIP: "Struct.transparentFunc()"
|
|
// CHECK-SIL-SKIP-NONINLINE: "Struct.transparentFunc()"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "Struct.transparentFunc()"
|
|
|
|
@inlinable public var varWithInlinableGetter: Int {
|
|
let ALLNOTYPECHECK_local = "Struct.varWithInlinableGetter.getter"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
return 0
|
|
}
|
|
// CHECK-TEXTUAL: "Struct.varWithInlinableGetter.getter"
|
|
// CHECK-SIL-NO-SKIP: "Struct.varWithInlinableGetter.getter"
|
|
// CHECK-SIL-SKIP-NONINLINE: "Struct.varWithInlinableGetter.getter"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "Struct.varWithInlinableGetter.getter"
|
|
|
|
public var varWithInlinableSetter: Int {
|
|
get { 0 }
|
|
@inlinable set {
|
|
let ALLNOTYPECHECK_local = "Struct.varWithInlinableSetter.setter"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
}
|
|
}
|
|
// CHECK-TEXTUAL: "Struct.varWithInlinableSetter.setter"
|
|
// CHECK-SIL-NO-SKIP: "Struct.varWithInlinableSetter.setter"
|
|
// CHECK-SIL-SKIP-NONINLINE: "Struct.varWithInlinableSetter.setter"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "Struct.varWithInlinableSetter.setter"
|
|
|
|
public lazy var varWithLazyInitializer: Int = {
|
|
// We currently don't have a way to skip typechecking a pattern binding
|
|
// initializer expression
|
|
_blackHole("Struct.varWithLazyInitializer.init")
|
|
return 0
|
|
}()
|
|
// CHECK-TEXTUAL-NOT: "Struct.varWithLazyInitializer.init"
|
|
// CHECK-SIL-NO-SKIP: "Struct.varWithLazyInitializer.init"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.varWithLazyInitializer.init"
|
|
|
|
public var varWithObserverDidSet: Int = 1 {
|
|
didSet {
|
|
// Body typechecked regardless
|
|
_blackHole("Struct.varWithObserverDidSet.didSet")
|
|
}
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.varWithObserverDidSet.didSet"
|
|
// CHECK-SIL-NO-SKIP: "Struct.varWithObserverDidSet.didSet"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES: "Struct.varWithObserverDidSet.didSet"
|
|
|
|
public var varWithObserverWillSet: Int = 1 {
|
|
willSet {
|
|
let ALLNOTYPECHECK_local = "Struct.varWithObserverWillSet.willSet"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
}
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.varWithObserverWillSet.willSet"
|
|
// CHECK-SIL-NO-SKIP: "Struct.varWithObserverWillSet.willSet"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.varWithObserverWillSet.willSet"
|
|
|
|
public var varWithPublicGetter: Int {
|
|
let NEVERTYPECHECK_local = "Struct.varWithPublicGetter.getter"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
return 0
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.varWithPublicGetter.getter"
|
|
// CHECK-SIL-NO-SKIP: "Struct.varWithPublicGetter.getter"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.varWithPublicGetter.getter"
|
|
|
|
public var varWithSetter: Int {
|
|
get { 0 }
|
|
set {
|
|
let NEVERTYPECHECK_local = "Struct.varWithSetter.setter"
|
|
_blackHole(NEVERTYPECHECK_local)
|
|
}
|
|
}
|
|
// CHECK-TEXTUAL-NOT: "Struct.varWithSetter.setter"
|
|
// CHECK-SIL-NO-SKIP: "Struct.varWithSetter.setter"
|
|
// CHECK-SIL-SKIP-NONINLINE-OR-WITHOUTTYPES-NOT: "Struct.varWithSetter.setter"
|
|
|
|
@_transparent public var varWithTransparentGetter: Int {
|
|
let ALLNOTYPECHECK_local = "Struct.varWithTransparentGetter.getter"
|
|
_blackHole(ALLNOTYPECHECK_local)
|
|
return 0
|
|
}
|
|
// CHECK-TEXTUAL: "Struct.varWithTransparentGetter.getter"
|
|
// CHECK-SIL-NO-SKIP: "Struct.varWithTransparentGetter.getter"
|
|
// CHECK-SIL-SKIP-NONINLINE: "Struct.varWithTransparentGetter.getter"
|
|
// CHECK-SIL-SKIP-WITHOUTTYPES: "Struct.varWithTransparentGetter.getter"
|
|
}
|