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