198d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor// Header for PCH test namespaces.cpp
298d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor
398d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregornamespace N1 {
498d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor  typedef int t1;
598d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor}
698d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor
798d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregornamespace N1 {
898d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor  typedef int t2;
9b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
10b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner  void used_func();
11b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
12b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner  struct used_cls { };
1398d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor}
1498d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor
1598d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregornamespace N2 {
1698d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor  typedef float t1;
17b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
18b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner  namespace Inner {
19b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner    typedef int t3;
20b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner  };
21b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner}
22b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
23b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattnernamespace {
24b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner  void anon() { }
25b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner  class C;
26b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner}
27b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
28b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattnernamespace N3 {
29b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner  namespace {
30b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner    class C;
31b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner  }
32b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner}
33b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
34b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattnernamespace Alias1 = N2::Inner;
35b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
36b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattnerusing namespace N2::Inner;
37b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner
38b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattnerextern "C" {
39b063d153c55d662ec34f4773387bc45d2289ff74Chris Lattner  void ext();
4098d62cc8bfd8825f0ab48027a7e01c13390487deDouglas Gregor}
41ac9aaf7d8f31aaeb2b7ee1dcf7c75783258bf439Douglas Gregor
42ac9aaf7d8f31aaeb2b7ee1dcf7c75783258bf439Douglas Gregorinline namespace N4 {
43ac9aaf7d8f31aaeb2b7ee1dcf7c75783258bf439Douglas Gregor  struct MemberOfN4;
44ac9aaf7d8f31aaeb2b7ee1dcf7c75783258bf439Douglas Gregor}
45