mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
It should no longer be necessary to provide an `@_alwaysEmitIntoClient` version of `_diagnoseUnavailableCodeReached()`. This workaround was originally added to provide compatibility with projects that were misconfigured to compile against a newer stdlib but link against an older one. Resolves rdar://119892482.
65 lines
3.0 KiB
Swift
65 lines
3.0 KiB
Swift
// RUN: %target-swift-emit-silgen -module-name Test -parse-as-library %s -verify -unavailable-decl-optimization=stub | %FileCheck %s --check-prefixes=CHECK
|
|
|
|
public struct S {}
|
|
func foo() {}
|
|
|
|
@available(*, unavailable)
|
|
public class ExplicitInitClass {
|
|
// ExplicitInitClass.s.getter
|
|
// CHECK-LABEL: sil{{.*}}@$s4Test17ExplicitInitClassC1sAA1SVvg
|
|
// CHECK: [[FNREF:%.*]] = function_ref @$[[DIAGNOSEFN:(ss31_diagnoseUnavailableCodeReacheds5NeverOyF|ss31_diagnoseUnavailableCodeReacheds5NeverOyFTwb)]] : $@convention(thin) () -> Never
|
|
// CHECK-NEXT: [[APPLY:%.*]] = apply [[FNREF]]()
|
|
// CHECK: load
|
|
// CHECK: } // end sil function '$s4Test17ExplicitInitClassC1sAA1SVvg'
|
|
//
|
|
// ExplicitInitClass.s.setter
|
|
// CHECK-LABEL: sil{{.*}}@$s4Test17ExplicitInitClassC1sAA1SVvs
|
|
// CHECK: [[FNREF:%.*]] = function_ref @$[[DIAGNOSEFN]] : $@convention(thin) () -> Never
|
|
// CHECK-NEXT: [[APPLY:%.*]] = apply [[FNREF]]()
|
|
// CHECK: assign
|
|
// CHECK: } // end sil function '$s4Test17ExplicitInitClassC1sAA1SVvs'
|
|
//
|
|
// ExplicitInitClass.s.modify
|
|
// CHECK-LABEL: sil{{.*}}@$s4Test17ExplicitInitClassC1sAA1SVvM
|
|
// CHECK: [[FNREF:%.*]] = function_ref @$[[DIAGNOSEFN]] : $@convention(thin) () -> Never
|
|
// CHECK-NEXT: [[APPLY:%.*]] = apply [[FNREF]]()
|
|
// CHECK: yield
|
|
// CHECK: } // end sil function '$s4Test17ExplicitInitClassC1sAA1SVvM'
|
|
public var s: S
|
|
|
|
// ExplicitInitClass.__allocating_init()
|
|
// CHECK-LABEL: sil{{.*}}@$s4Test17ExplicitInitClassCACycfC
|
|
// CHECK: [[FNREF:%.*]] = function_ref @$[[DIAGNOSEFN]] : $@convention(thin) () -> Never
|
|
// CHECK-NEXT: [[APPLY:%.*]] = apply [[FNREF]]()
|
|
// CHECK: alloc_ref $ExplicitInitClass
|
|
// CHECK: function_ref @$s4Test17ExplicitInitClassCACycfc
|
|
// CHECK: } // end sil function '$s4Test17ExplicitInitClassCACycfC'
|
|
//
|
|
// ExplicitInitClass.init()
|
|
// CHECK-LABEL: sil{{.*}}@$s4Test17ExplicitInitClassCACycfc
|
|
// CHECK: [[FNREF:%.*]] = function_ref @$[[DIAGNOSEFN]] : $@convention(thin) () -> Never
|
|
// CHECK-NEXT: [[APPLY:%.*]] = apply [[FNREF]]()
|
|
// CHECK: function_ref @$s4Test1SVACycfC
|
|
// CHECK: } // end sil function '$s4Test17ExplicitInitClassCACycfc'
|
|
public init() {
|
|
s = S()
|
|
}
|
|
|
|
// ExplicitInitClass.deinit
|
|
// CHECK-LABEL: sil{{.*}}@$s4Test17ExplicitInitClassCfd
|
|
// CHECK: [[FNREF:%.*]] = function_ref @$[[DIAGNOSEFN]] : $@convention(thin) () -> Never
|
|
// CHECK-NEXT: [[APPLY:%.*]] = apply [[FNREF]]()
|
|
// CHECK: {{%.*}} = function_ref @$s4Test3fooyyF
|
|
// CHECK: } // end sil function '$s4Test17ExplicitInitClassCfd'
|
|
//
|
|
// ExplicitInitClass.__deallocating_deinit
|
|
// CHECK-LABEL: sil{{.*}}@$s4Test17ExplicitInitClassCfD
|
|
// CHECK: [[FNREF:%.*]] = function_ref @$[[DIAGNOSEFN]] : $@convention(thin) () -> Never
|
|
// CHECK-NEXT: [[APPLY:%.*]] = apply [[FNREF]]()
|
|
// CHECK: {{%.*}} = function_ref @$s4Test17ExplicitInitClassCfd
|
|
// CHECK: } // end sil function '$s4Test17ExplicitInitClassCfD'
|
|
deinit {
|
|
foo()
|
|
}
|
|
}
|