| // RUN: %target-typecheck-verify-swift |
| // REQUIRES: OS=macosx |
| |
| // Make sure that a compatible unavailable wrapping doesn't allow referencing declarations that are completely unavailable. |
| |
| @available(iOS, unavailable) |
| class Outer { |
| @available(*, unavailable) |
| func completelyBadMethod() {} // expected-note {{'completelyBadMethod()' has been explicitly marked unavailable here}} |
| } |
| |
| @available(iOS, unavailable) |
| func test(outer: Outer) { |
| outer.completelyBadMethod() // expected-error {{'completelyBadMethod()' is unavailable}} |
| } |
| |
| @available(*, unavailable) |
| class Outer2 { // expected-note {{'Outer2' has been explicitly marked unavailable here}} |
| @available(iOS, unavailable) |
| func innerUnavailable() {} |
| } |
| @available(iOS, unavailable) |
| func test2(outer: Outer2) { // expected-error {{'Outer2' is unavailable}} |
| outer.innerUnavailable() |
| } |