1*67e74705SXin Li // RUN: %clang_cc1 -std=c++11 -ast-dump -ast-dump-filter Test %s | FileCheck -check-prefix DECLS %s 2*67e74705SXin Li // RUN: %clang_cc1 -std=c++11 -ast-dump-lookups -ast-dump-filter Test %s | FileCheck -check-prefix LOOKUPS %s 3*67e74705SXin Li // RUN: %clang_cc1 -std=c++11 -ast-dump -ast-dump-lookups -ast-dump-filter Test %s | FileCheck -check-prefix DECLS-LOOKUPS %s 4*67e74705SXin Li // RUN: %clang_cc1 -std=c++11 -DPRAGMA -fsyntax-only %s 2>&1 | FileCheck -check-prefix PRAGMA %s 5*67e74705SXin Li 6*67e74705SXin Li namespace Test { 7*67e74705SXin Li typedef int T; 8*67e74705SXin Li extern int a; 9*67e74705SXin Li int a = 0; 10*67e74705SXin Li } 11*67e74705SXin Li 12*67e74705SXin Li #ifdef PRAGMA 13*67e74705SXin Li #pragma clang __debug dump Test 14*67e74705SXin Li // PRAGMA: lookup results for Test: 15*67e74705SXin Li // PRAGMA-NEXT: NamespaceDecl {{.*}} Test 16*67e74705SXin Li // PRAGMA-NEXT: |-TypedefDecl {{.*}} T 'int' 17*67e74705SXin Li // PRAGMA-NEXT: | `-BuiltinType {{.*}} 'int' 18*67e74705SXin Li // PRAGMA-NEXT: |-VarDecl [[EXTERN_A:0x[^ ]*]] {{.*}} a 'int' extern 19*67e74705SXin Li // PRAGMA-NEXT: `-VarDecl {{.*}} prev [[EXTERN_A]] {{.*}} a 'int' cinit 20*67e74705SXin Li // PRAGMA-NEXT: `-IntegerLiteral {{.*}} 'int' 0 21*67e74705SXin Li #endif 22*67e74705SXin Li 23*67e74705SXin Li namespace Test { } 24*67e74705SXin Li 25*67e74705SXin Li // DECLS: Dumping Test: 26*67e74705SXin Li // DECLS-NEXT: NamespaceDecl {{.*}} Test 27*67e74705SXin Li // DECLS-NEXT: |-TypedefDecl {{.*}} T 'int' 28*67e74705SXin Li // DECLS-NEXT: | `-BuiltinType {{.*}} 'int' 29*67e74705SXin Li // DECLS-NEXT: |-VarDecl [[EXTERN_A:0x[^ ]*]] {{.*}} a 'int' extern 30*67e74705SXin Li // DECLS-NEXT: `-VarDecl {{.*}} prev [[EXTERN_A]] {{.*}} a 'int' cinit 31*67e74705SXin Li // DECLS-NEXT: `-IntegerLiteral {{.*}} 'int' 0 32*67e74705SXin Li // 33*67e74705SXin Li // DECLS: Dumping Test: 34*67e74705SXin Li // DECLS-NEXT: NamespaceDecl {{.*}} Test 35*67e74705SXin Li 36*67e74705SXin Li // LOOKUPS: Dumping Test: 37*67e74705SXin Li // LOOKUPS-NEXT: StoredDeclsMap Namespace {{.*}} 'Test' 38*67e74705SXin Li // LOOKUPS: DeclarationName 'a' 39*67e74705SXin Li // LOOKUPS-NEXT: `-Var {{.*}} 'a' 'int' 40*67e74705SXin Li // 41*67e74705SXin Li // LOOKUPS: Dumping Test: 42*67e74705SXin Li // LOOKUPS-NEXT: Lookup map is in primary DeclContext 43*67e74705SXin Li 44*67e74705SXin Li // DECLS-LOOKUPS: Dumping Test: 45*67e74705SXin Li // DECLS-LOOKUPS-NEXT: StoredDeclsMap Namespace {{.*}} 'Test' 46*67e74705SXin Li // DECLS-LOOKUPS: -DeclarationName 'a' 47*67e74705SXin Li // DECLS-LOOKUPS-NEXT: `-Var [[A:[^ ]*]] 'a' 'int' 48*67e74705SXin Li // DECLS-LOOKUPS-NEXT: |-VarDecl [[EXTERN_A:0x[^ ]*]] {{.*}} a 'int' extern 49*67e74705SXin Li // DECLS-LOOKUPS-NEXT: `-VarDecl [[A]] prev [[EXTERN_A]] {{.*}} a 'int' cinit 50*67e74705SXin Li // DECLS-LOOKUPS-NEXT: `-IntegerLiteral {{.*}} 'int' 0 51*67e74705SXin Li // 52*67e74705SXin Li // DECLS-LOOKUPS: Dumping Test: 53*67e74705SXin Li // DECLS-LOOKUPS-NEXT: Lookup map is in primary DeclContext 54