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)
20void f(id a) {
21  [a partiallyUnavailableMethod];  // no warning, `a` could be an Interface1.
22}
23#endif
24