blob: 356213647ff808c93bccd4fdd82b6cd21bdb3591 [file] [log] [blame]
// RUN: %target-swift-frontend -emit-ir %s | %FileCheck %s
// REQUIRES: objc_interop
// Check that type metadata defined inside extensions of files imported from
// other modules is emitted with the right linkage.
//
// In particular, it should be possible to define types inside extensions of
// types imported from Foundation (rdar://problem/27245620).
import Foundation
// CHECK-LABEL: @"$SSo8NSNumberC31extension_type_metadata_linkingE4BaseCMm" = global
// CHECK-LABEL: @"$SSo8NSNumberC31extension_type_metadata_linkingE4BaseCMn" = constant
// CHECK-LABEL: @"$SSo8NSNumberC31extension_type_metadata_linkingE4BaseCMf" = internal global
// CHECK-LABEL: @"$SSo8NSNumberC31extension_type_metadata_linkingE7DerivedCMm" = global
// CHECK-LABEL: @"$SSo8NSNumberC31extension_type_metadata_linkingE7DerivedCMn" = constant
// CHECK-LABEL: @"$SSo8NSNumberC31extension_type_metadata_linkingE7DerivedCMf" = internal global
// CHECK-LABEL: @"$SSo8NSNumberC31extension_type_metadata_linkingE6StructVMn" = constant
// CHECK-LABEL: @"$SSo8NSNumberC31extension_type_metadata_linkingE6StructVMf" = internal constant
// CHECK-LABEL: @"$SSo8NSNumberC31extension_type_metadata_linkingE4BaseCN" = alias
// CHECK-LABEL: @"$SSo8NSNumberC31extension_type_metadata_linkingE7DerivedCN" = alias
// CHECK-LABEL: @"$SSo8NSNumberC31extension_type_metadata_linkingE6StructVN" = alias
// CHECK-LABEL: define swiftcc %swift.metadata_response @"$SSo8NSNumberC31extension_type_metadata_linkingE4BaseCMa"
// CHECK-LABEL: define swiftcc %swift.metadata_response @"$SSo8NSNumberC31extension_type_metadata_linkingE7DerivedCMa"
// FIXME: Not needed
// CHECK-LABEL: define swiftcc %swift.metadata_response @"$SSo8NSNumberC31extension_type_metadata_linkingE6StructVMa"
extension NSNumber {
public class Base : CustomStringConvertible {
public var description: String {
return "Base"
}
}
public class Derived : Base {
override public var description: String {
return "Derived"
}
}
public struct Struct {}
}