1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
// RUN: %empty-directory(%t)
// RUN: %target-swift-emit-silgen %s > %t/fragile-out.sil
// %FileCheck --check-prefix=POS %s < %t/fragile-out.sil
// %FileCheck --check-prefix=NEG %s < %t/fragile-out.sil
// RUN: %target-swift-emit-silgen -enable-library-evolution %s > %t/resilient-out.sil
// %FileCheck --check-prefix=POS %s < %t/resilient-out.sil
// %FileCheck --check-prefix=NEG %s < %t/resilient-out.sil
@frozen
public struct IsCopyable {
public init() {}
// Shouldn't get a property descriptor since property type is noncopyable
// NEG-NOT: sil_property #IsCopyable.noncopyable
public var noncopyable: IsntCopyable {
get { IsntCopyable() }
set { }
}
// Should get a property descriptor, copyable container and property
// POS: sil_property #IsCopyable.copyable
public var copyable: IsCopyable {
get { IsCopyable() }
set { }
}
// Shouldn't get a property descriptor since it's static
// NEG-NOT: sil_property #IsCopyable.staticCopyable
public static var staticCopyable: IsCopyable = IsCopyable()
// Shouldn't get a property descriptor since it's static
// NEG-NOT: sil_property #IsCopyable.staticNoncopyable
public static var staticNoncopyable: IsntCopyable = IsntCopyable()
}
@frozen
public struct IsntCopyable: ~Copyable {
public init() {}
// Shouldn't get a property descriptor since container and property type are both noncopyable
// NEG-NOT: sil_property #IsntCopyable.noncopyable
public var noncopyable: IsntCopyable {
get { IsntCopyable() }
set { }
}
// Shouldn't get a property descriptor since container type is noncopyable
// NEG-NOT: sil_property #IsntCopyable.copyable
public var copyable: IsCopyable {
get { IsCopyable() }
set { }
}
// Shouldn't get a property descriptor since it's static
// NEG-NOT: sil_property #IsntCopyable.staticCopyable
public static var staticCopyable: IsCopyable = IsCopyable()
// Shouldn't get a property descriptor since it's static
// NEG-NOT: sil_property #IsntCopyable.staticNoncopyable
public static var staticNoncopyable: IsntCopyable = IsntCopyable()
}
// Shouldn't get a property descriptor since it's global
// NEG-NOT: sil_property #{{.*}}globalCopyable
public var globalCopyable: IsCopyable = IsCopyable()
// Shouldn't get a property descriptor since it's global
// NEG-NOT: sil_property #{{.*}}globalNoncopyable
public var globalNoncopyable: IsntCopyable = IsntCopyable()
|