blob: f1ad1a0f2ae1b8f67c3c5725a881c68a7dedd033 [file] [log] [blame]
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -parse-as-library -module-name=test -O %s -emit-ir -disable-reflection-metadata > %t/out.txt
// RUN: %FileCheck %s < %t/out.txt
// RUN: %FileCheck %s --check-prefix=NEGATIVE < %t/out.txt
// We have an unused conformance. It should not crash.
//
// FIXME: Actually stop emitting the conformance.
struct S { }
extension S: Equatable {
static func ==(lhs: S, rhs: S) -> Bool {
return false
}
}
// We should only emit metadata for the second type, even though it has a
// field whose type is the first.
struct TypeOfProperty {
var x: Int
}
struct HasPropertyType {
var p: TypeOfProperty
}
// NEGATIVE-NOT: @"$s4test14TypeOfPropertyVMn"
// CHECK-LABEL: @"$s4test15HasPropertyTypeVMn"
@_optimize(none)
public func takeMetadata<T>(_: T.Type) {}
public func forceMetadata() {
takeMetadata(HasPropertyType.self)
}
// CHECK-LABEL: @"$s4test1SVSQAAMc" = hidden constant
// CHECK-LABEL: @"$s4test1SVMn" = hidden constant