|  | // RUN: %clang_cc1 -fsyntax-only -DBOTH -verify %s | 
|  | // If the decls come from a pch, the behavior shouldn't change: | 
|  | // RUN: %clang_cc1 -x objective-c-header %s -emit-pch -o %t | 
|  | // RUN: %clang_cc1 -DUSES -include-pch %t -fsyntax-only -verify %s | 
|  | // expected-no-diagnostics | 
|  |  | 
|  | // The slightly strange ifdefs are so that the command that builds the gch file | 
|  | // doesn't need any -D switches, for these would get embedded in the gch. | 
|  |  | 
|  | #ifndef USES | 
|  | @interface Interface1 | 
|  | - (void)partiallyUnavailableMethod; | 
|  | @end | 
|  | @interface Interface2 | 
|  | - (void)partiallyUnavailableMethod __attribute__((unavailable)); | 
|  | @end | 
|  | #endif | 
|  |  | 
|  | #if defined(USES) || defined(BOTH) | 
|  | void f(id a) { | 
|  | [a partiallyUnavailableMethod];  // no warning, `a` could be an Interface1. | 
|  | } | 
|  | #endif |