mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
These line numbers are consumed by LLDB and stored in the Declaration object, but as far as I can tell no user-facing feature relies on this. Removing the line number can reduce the churn for incremental builds significantly, since whitespace changes in one file may trigger a recompilation of any file that uses a type declared below the whitespace change. <rdar://problem/63156560>
39 lines
1.4 KiB
Swift
39 lines
1.4 KiB
Swift
// RUN: %target-swift-frontend -disable-objc-attr-requires-foundation-module %s -emit-ir -g -o - | %FileCheck %s
|
|
|
|
// REQUIRES: objc_interop
|
|
|
|
// CHECK-DAG: ![[TY0:.*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "ObjCClass",{{.*}} runtimeLang: DW_LANG_Swift,
|
|
@objc class ObjCClass {
|
|
@IBAction func click(_: AnyObject?) -> () {}
|
|
}
|
|
|
|
// CHECK-DAG: ![[TY1:[0-9]+]] = !DICompositeType(tag: DW_TAG_structure_type, name: "SwiftClass",{{.*}} runtimeLang: DW_LANG_Swift
|
|
class SwiftClass {
|
|
@objc func objcmethod() -> () {}
|
|
func swiftmethod() -> () {}
|
|
// Block attribute
|
|
func f(_ someBlock: @convention(block) (Int64) -> Int64) {
|
|
}
|
|
}
|
|
|
|
// FIXME: This is currently elided, but should reappear eventually as
|
|
// an artificial variable.
|
|
// DISABLED: [ DW_TAG_variable ] [OBJC_METACLASS_$__TtC10attributes9ObjCClass]
|
|
|
|
// CHECK-DAG: !DIGlobalVariable(name: "strongRef0",{{.*}}line: [[@LINE+1]],{{.*}} type: ![[TY0]],{{.*}} isLocal: false, isDefinition: true
|
|
var strongRef0 : ObjCClass
|
|
var strongRef1 : SwiftClass = SwiftClass()
|
|
|
|
// CHECK-DAG: !DIDerivedType(tag: DW_TAG_typedef, name: "$s10attributes10SwiftClassCXSqXwD"
|
|
weak var weakRef1 : SwiftClass? = strongRef1
|
|
// CHECK-DAG: !DIDerivedType(tag: DW_TAG_typedef, name: "$s10attributes10SwiftClassCXoD"
|
|
unowned var unownedRef1 : SwiftClass
|
|
|
|
protocol Protocol1 : class {
|
|
func foo(_ x: Float) -> Float
|
|
}
|
|
|
|
class Implementation : Protocol1 {
|
|
func foo(_ x: Float) -> Float { return 2*x }
|
|
}
|