|  | // RUN: clang -fsyntax-only -verify %s | 
|  | namespace A { // expected-note {{previous definition is here}} | 
|  | int A; | 
|  | void f() { A = 0; } | 
|  | } | 
|  |  | 
|  | void f() { A = 0; } // expected-error {{unexpected namespace name 'A': expected expression}} | 
|  | int A; // expected-error {{redefinition of 'A' as different kind of symbol}} | 
|  | class A; // expected-error {{redefinition of 'A' as different kind of symbol}} | 
|  |  | 
|  | class B {}; // expected-note {{previous definition is here}} | 
|  |  | 
|  | void C(); // expected-note {{previous definition is here}} | 
|  | namespace C {} // expected-error {{redefinition of 'C' as different kind of symbol}} | 
|  |  | 
|  | namespace D { | 
|  | class D {}; | 
|  | } | 
|  |  | 
|  | namespace S1 { | 
|  | int x; | 
|  |  | 
|  | namespace S2 { | 
|  |  | 
|  | namespace S3 { | 
|  | B x; | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | namespace S1 { | 
|  | void f() { | 
|  | x = 0; | 
|  | } | 
|  |  | 
|  | namespace S2 { | 
|  |  | 
|  | namespace S3 { | 
|  | void f() { | 
|  | x = 0; // expected-error {{incompatible type assigning 'int', expected 'class B'}} | 
|  | } | 
|  | } | 
|  |  | 
|  | int y; | 
|  | } | 
|  | } | 
|  |  | 
|  | namespace S1 { | 
|  | namespace S2 { | 
|  | namespace S3 { | 
|  | void f3() { | 
|  | y = 0; | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | namespace B {} // expected-error {{redefinition of 'B' as different kind of symbol}} |