1 // RUN: %clang_cc1 -ast-dump %s | FileCheck %s
2 
3 template<class T>
4 class P {
5  public:
6   P(T* t) {}
7 };
8 
9 namespace foo {
10 class A { public: A() {} };
11 enum B {};
12 typedef int C;
13 }
14 
15 // CHECK: VarDecl {{0x[0-9a-fA-F]+}} <line:16:1, col:36> ImplicitConstrArray 'foo::A [2]'
16 static foo::A ImplicitConstrArray[2];
17 
18 int main() {
19   // CHECK: CXXNewExpr {{0x[0-9a-fA-F]+}} <col:19, col:28> 'foo::A *'
20   P<foo::A> p14 = new foo::A;
21   // CHECK: CXXNewExpr {{0x[0-9a-fA-F]+}} <col:19, col:28> 'foo::B *'
22   P<foo::B> p24 = new foo::B;
23   // CHECK: CXXNewExpr {{0x[0-9a-fA-F]+}} <col:19, col:28> 'foo::C *'
24   P<foo::C> pr4 = new foo::C;
25 }
26 
27 foo::A getName() {
28   // CHECK: CXXConstructExpr {{0x[0-9a-fA-F]+}} <col:10, col:17> 'foo::A'
29   return foo::A();
30 }
31