Files
swift-mirror/test/Frontend/skip-function-bodies.swift
Allan Shortlidge 082f0ac4b5 Tests: Use a more natural spelling for ABI triple lit substitutions.
`%target-swift-5.8-abi-triple` instead of `%target-swift-abi-5.8-triple`, for
example.
2024-10-18 10:11:36 -07:00

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"
}