|  | // no PCH | 
|  | // RUN: %clang_cc1 -include %s -include %s -fsyntax-only %s | 
|  | // with PCH | 
|  | // RUN: %clang_cc1 -chain-include %s -chain-include %s -fsyntax-only %s | 
|  | // with PCH, with modules enabled | 
|  | // RUN: %clang_cc1 -chain-include %s -chain-include %s -fsyntax-only -fmodules %s | 
|  | #if !defined(PASS1) | 
|  | #define PASS1 | 
|  |  | 
|  | namespace ns {} | 
|  | namespace os {} | 
|  |  | 
|  | #elif !defined(PASS2) | 
|  | #define PASS2 | 
|  |  | 
|  | namespace ns { | 
|  | namespace { | 
|  | extern int x; | 
|  | } | 
|  | } | 
|  |  | 
|  | namespace { | 
|  | extern int y; | 
|  | } | 
|  | namespace { | 
|  | } | 
|  |  | 
|  | namespace os { | 
|  | extern "C" { | 
|  | namespace { | 
|  | extern int z; | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | #else | 
|  |  | 
|  | namespace ns { | 
|  | namespace { | 
|  | int x; | 
|  | } | 
|  | void test() { | 
|  | (void)x; | 
|  | } | 
|  | } | 
|  |  | 
|  | namespace { | 
|  | int y; | 
|  | } | 
|  | void test() { | 
|  | (void)y; | 
|  | } | 
|  |  | 
|  | namespace os { | 
|  | namespace { | 
|  | int z; | 
|  | } | 
|  | void test() { | 
|  | (void)z; | 
|  | } | 
|  | } | 
|  |  | 
|  | #endif |