1 | // RUN: %clang_cc1 -fsyntax-only -DBOTH -verify %s |
2 | // If the decls come from a pch, the behavior shouldn't change: |
3 | // RUN: %clang_cc1 -x objective-c-header %s -emit-pch -o %t |
4 | // RUN: %clang_cc1 -DUSES -include-pch %t -fsyntax-only -verify %s |
5 | // expected-no-diagnostics |
6 | |
7 | // The slightly strange ifdefs are so that the command that builds the gch file |
8 | // doesn't need any -D switches, for these would get embedded in the gch. |
9 | |
10 | #ifndef USES |
11 | @interface Interface1 |
12 | - (void)partiallyUnavailableMethod; |
13 | @end |
14 | @interface Interface2 |
15 | - (void)partiallyUnavailableMethod __attribute__((unavailable)); |
16 | @end |
17 | #endif |
18 | |
19 | #if defined(USES) || defined(BOTH) |
20 | void f(id a) { |
21 | [a partiallyUnavailableMethod]; // no warning, `a` could be an Interface1. |
22 | } |
23 | #endif |
24 | |