|
1 | 1 | // RUN: %target-typecheck-verify-swift -parse-as-library -module-name MyModule |
2 | 2 |
|
3 | | -// REQUIRES: OS=macosx |
4 | | - |
5 | 3 | @available(*, unavailable) |
6 | 4 | func unavailable_foo() {} // expected-note {{'unavailable_foo()' has been explicitly marked unavailable here}} |
7 | 5 |
|
@@ -31,90 +29,6 @@ func foo(x : NSUInteger) { // expected-error {{'NSUInteger' is unavailable: use |
31 | 29 | // expected-error@-1 {{cannot convert value of type 'Int' to specified type 'Outer.NSUInteger'}} |
32 | 30 | } |
33 | 31 |
|
34 | | -/* FIXME 'nil == a' fails to type-check with a bogus error message |
35 | | - * <rdar://problem/17540796> |
36 | | -func markUsed<T>(t: T) {} |
37 | | -func testString() { |
38 | | - let a : String = "Hey" |
39 | | - if a == nil { |
40 | | - markUsed("nil") |
41 | | - } else if nil == a { |
42 | | - markUsed("nil") |
43 | | - } |
44 | | - else { |
45 | | - markUsed("not nil") |
46 | | - } |
47 | | -} |
48 | | - */ |
49 | | - |
50 | | -// Test preventing protocol witnesses for unavailable requirements |
51 | | -@objc |
52 | | -protocol ProtocolWithRenamedRequirement { |
53 | | - @available(*, unavailable, renamed: "new(bar:)") |
54 | | - @objc optional func old(foo: Int) // expected-note{{'old(foo:)' has been explicitly marked unavailable here}} |
55 | | - func new(bar: Int) |
56 | | -} |
57 | | - |
58 | | -class ClassWithGoodWitness : ProtocolWithRenamedRequirement { |
59 | | - @objc func new(bar: Int) {} |
60 | | -} |
61 | | - |
62 | | -class ClassWithBadWitness : ProtocolWithRenamedRequirement { |
63 | | - @objc func old(foo: Int) {} // expected-error{{'old(foo:)' has been renamed to 'new(bar:)'}} |
64 | | - @objc func new(bar: Int) {} |
65 | | -} |
66 | | - |
67 | | -@available(OSX, unavailable) |
68 | | -let unavailableOnOSX: Int = 0 // expected-note{{explicitly marked unavailable here}} |
69 | | -@available(iOS, unavailable) |
70 | | -let unavailableOniOS: Int = 0 |
71 | | -@available(iOS, unavailable) @available(OSX, unavailable) |
72 | | -let unavailableOnBothA: Int = 0 // expected-note{{explicitly marked unavailable here}} |
73 | | -@available(OSX, unavailable) @available(iOS, unavailable) |
74 | | -let unavailableOnBothB: Int = 0 // expected-note{{explicitly marked unavailable here}} |
75 | | - |
76 | | -@available(OSX, unavailable) |
77 | | -typealias UnavailableOnOSX = Int // expected-note{{explicitly marked unavailable here}} |
78 | | -@available(iOS, unavailable) |
79 | | -typealias UnavailableOniOS = Int |
80 | | -@available(iOS, unavailable) @available(OSX, unavailable) |
81 | | -typealias UnavailableOnBothA = Int // expected-note{{explicitly marked unavailable here}} |
82 | | -@available(OSX, unavailable) @available(iOS, unavailable) |
83 | | -typealias UnavailableOnBothB = Int // expected-note{{explicitly marked unavailable here}} |
84 | | - |
85 | | -@available(macOS, unavailable) |
86 | | -let unavailableOnMacOS: Int = 0 // expected-note{{explicitly marked unavailable here}} |
87 | | -@available(macOS, unavailable) |
88 | | -typealias UnavailableOnMacOS = Int // expected-note{{explicitly marked unavailable here}} |
89 | | - |
90 | | -@available(OSXApplicationExtension, unavailable) |
91 | | -let unavailableOnOSXAppExt: Int = 0 |
92 | | -@available(macOSApplicationExtension, unavailable) |
93 | | -let unavailableOnMacOSAppExt: Int = 0 |
94 | | - |
95 | | -@available(OSXApplicationExtension, unavailable) |
96 | | -typealias UnavailableOnOSXAppExt = Int |
97 | | -@available(macOSApplicationExtension, unavailable) |
98 | | -typealias UnavailableOnMacOSAppExt = Int |
99 | | - |
100 | | -func testPlatforms() { |
101 | | - _ = unavailableOnOSX // expected-error{{unavailable}} |
102 | | - _ = unavailableOniOS |
103 | | - _ = unavailableOnBothA // expected-error{{unavailable}} |
104 | | - _ = unavailableOnBothB // expected-error{{unavailable}} |
105 | | - _ = unavailableOnMacOS // expected-error{{unavailable}} |
106 | | - _ = unavailableOnOSXAppExt |
107 | | - _ = unavailableOnMacOSAppExt |
108 | | - |
109 | | - let _: UnavailableOnOSX = 0 // expected-error{{unavailable}} |
110 | | - let _: UnavailableOniOS = 0 |
111 | | - let _: UnavailableOnBothA = 0 // expected-error{{unavailable}} |
112 | | - let _: UnavailableOnBothB = 0 // expected-error{{unavailable}} |
113 | | - let _: UnavailableOnMacOS = 0 // expected-error{{unavailable}} |
114 | | - let _: UnavailableOnOSXAppExt = 0 |
115 | | - let _: UnavailableOnMacOSAppExt = 0 |
116 | | -} |
117 | | - |
118 | 32 | struct VarToFunc { |
119 | 33 | @available(*, unavailable, renamed: "function()") |
120 | 34 | var variable: Int { // expected-note 2 {{explicitly marked unavailable here}} |
|
0 commit comments