198d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor// Test this without pch.
298d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor// RUN: %clang_cc1 -x c++ -include %S/Inputs/namespaces.h -fsyntax-only %s
398d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor
498d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor// Test with pch.
598d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor// RUN: %clang_cc1 -x c++ -emit-pch -o %t %S/Inputs/namespaces.h
698d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor// RUN: %clang_cc1 -x c++ -include-pch %t -fsyntax-only %s
798d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor
898d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregorint int_val;
998d62cc8bfd8825f0ab48027a7e01c13390487deDouglas GregorN1::t1 *ip1 = &int_val;
1098d62cc8bfd8825f0ab48027a7e01c13390487deDouglas GregorN1::t2 *ip2 = &int_val;
11b063d153c55d662ec34f4773387bc45d2289ff74Chris LattnerN2::Inner::t3 *ip3 = &int_val;
1298d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor
1398d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregorfloat float_val;
1498d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregornamespace N2 { }
1598d62cc8bfd8825f0ab48027a7e01c13390487deDouglas GregorN2::t1 *fp1 = &float_val;
16b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
17b063d153c55d662ec34f4773387bc45d2289ff74Chris LattnerAlias1::t3 *ip4 = &int_val;
18b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattnert3 *ip5 = &int_val;
19b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
20b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattnervoid(*funp1)() = anon;
21b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
22b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattnernamespace {
23b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner  class C;
24b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner}
25b063d153c55d662ec34f4773387bc45d2289ff74Chris LattnerC* cp1;
26b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
27b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattnernamespace N3 {
28b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner  namespace {
29b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner    class C;
30b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner  }
31b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner}
32b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
33b063d153c55d662ec34f4773387bc45d2289ff74Chris LattnerN3::C *cp2;
34b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
35b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattnervoid(*funp2)() = ext;
36b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
37b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattnerusing N1::used_func;
38b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattnervoid (*pused)() = used_func;
39b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
401f9f68c211611419c1c7033a760ae234f4945ec4Argiris Kirtzidisusing N1::used_cls;
411f9f68c211611419c1c7033a760ae234f4945ec4Argiris Kirtzidisused_cls s1;
421f9f68c211611419c1c7033a760ae234f4945ec4Argiris Kirtzidisused_cls* ps1 = &s1;
43ac9aaf7d8f31aaeb2b7ee1dcf7c75783258bf439Douglas Gregor
44ac9aaf7d8f31aaeb2b7ee1dcf7c75783258bf439Douglas Gregorinline namespace N4 { }
45ac9aaf7d8f31aaeb2b7ee1dcf7c75783258bf439Douglas Gregorstruct MemberOfN4 *mn4;
46