| // Playgrounds |
| // RUN: %target-typecheck-verify-swift -playground |
| |
| // Immediate mode |
| // RUN: %target-typecheck-verify-swift -interpret |
| |
| // REQUIRES: OS=macosx |
| // REQUIRES: swift_interpreter |
| |
| @available(OSX, introduced: 10.7, deprecated: 10.8) |
| func deprecatedOn10_8() { } |
| |
| func someFunction() { |
| // We would normally emit a warning indicating this check is useless (because |
| // the minimum deployment target is 10.9) -- but do not when compiling for |
| // playgrounds because the developer cannot set the minimum deployment target |
| // herself. We also suppress this warning when compiling in immediate mode. |
| if #available(OSX 10.8, *) { |
| } else { |
| // This branch is dead with our minimum deployment target, so don't emit |
| // deprecation and unavailability diagnostics in it. |
| deprecatedOn10_8() // no-warning |
| availableOn10_50() // no-warning |
| } |
| |
| if #available(OSX 10.50, *) { // expected-note {{enclosing scope here}} |
| // Still warn if the check is useless because an enclosing #available rules |
| // it out. |
| if #available(OSX 10.50, *) { // expected-warning {{unnecessary check for 'OSX'; enclosing scope ensures guard will always be true}} |
| } |
| } |
| } |
| |
| @available(OSX 10.50, *) |
| func availableOn10_50() { // expected-note {{enclosing scope here}} |
| // Still warn if the check is useless because an enclosing @available rules |
| // it out. |
| if #available(OSX 10.50, *) { // expected-warning {{unnecessary check for 'OSX'; enclosing scope ensures guard will always be true}} |
| } |
| } |
| |
| // Make sure we don't warn at the top level |
| if #available(OSX 10.8, *) { |
| } |