xref: /aosp_15_r20/external/clang/test/Misc/ast-dump-lookups.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
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