xref: /llvm-project/clang/test/Import/cxx-anon-namespace/test.cpp (revision 8c2574832ed2064996389e4259eaf0bea0fa7951)
14e4c0664SRaphael Isemann // RUN: clang-import-test -dump-ast -import %S/Inputs/F.cpp -expression %s | FileCheck %s
24e4c0664SRaphael Isemann 
34e4c0664SRaphael Isemann // The implicit UsingDirectiveDecls for the anonymous namespaces are created by the Sema.
44e4c0664SRaphael Isemann 
5ed5a8971SRaphael Isemann // There might be another builtin namespace before our first namespace, so we can't
6ed5a8971SRaphael Isemann // just look for NamespaceDecl. Instead look for the first line of F.cpp (which only
7ed5a8971SRaphael Isemann // contains the namespace we are looking for but no other decl).
8ed5a8971SRaphael Isemann // CHECK: F.cpp:1:1
94e4c0664SRaphael Isemann // The nested anonymous namespace.
104e4c0664SRaphael Isemann // CHECK-NEXT: NamespaceDecl
11a9f10ebfSBalázs Kéri // CHECK-SAME: line:21:11
124e4c0664SRaphael Isemann // CHECK: FunctionDecl
134e4c0664SRaphael Isemann // CHECK-SAME: func4
144e4c0664SRaphael Isemann // CHECK-NEXT: CompoundStmt
154e4c0664SRaphael Isemann // This is for the nested anonymous namespace.
164e4c0664SRaphael Isemann // CHECK-NEXT: UsingDirectiveDecl
17*8c257483SMatheus Izvekov // CHECK-SAME: <col:1, line:24:1>
184e4c0664SRaphael Isemann // CHECK: FunctionDecl
194e4c0664SRaphael Isemann // CHECK-SAME: func1
204e4c0664SRaphael Isemann // CHECK-NEXT: CompoundStmt
214e4c0664SRaphael Isemann // CHECK-NEXT: UsingDirectiveDecl
22*8c257483SMatheus Izvekov // CHECK-SAME: <col:1, line:4:1>
234e4c0664SRaphael Isemann 
244e4c0664SRaphael Isemann // CHECK: NamespaceDecl
254e4c0664SRaphael Isemann // CHECK-SAME: test_namespace1
264e4c0664SRaphael Isemann // CHECK-NEXT: NamespaceDecl
274e4c0664SRaphael Isemann // CHECK: FunctionDecl
284e4c0664SRaphael Isemann // CHECK-SAME: func2
294e4c0664SRaphael Isemann // CHECK-NEXT: CompoundStmt
304e4c0664SRaphael Isemann // CHECK-NEXT: UsingDirectiveDecl
31*8c257483SMatheus Izvekov // CHECK-SAME: <col:1, line:9:1>
324e4c0664SRaphael Isemann 
334e4c0664SRaphael Isemann // CHECK-NEXT: NamespaceDecl
344e4c0664SRaphael Isemann // CHECK-SAME: test_namespace2
354e4c0664SRaphael Isemann // CHECK-NEXT: NamespaceDecl
364e4c0664SRaphael Isemann // CHECK-NEXT: NamespaceDecl
374e4c0664SRaphael Isemann // CHECK-SAME: test_namespace3
384e4c0664SRaphael Isemann // CHECK: FunctionDecl
394e4c0664SRaphael Isemann // CHECK-SAME: func3
404e4c0664SRaphael Isemann // CHECK-NEXT: CompoundStmt
414e4c0664SRaphael Isemann // CHECK-NEXT: UsingDirectiveDecl
42*8c257483SMatheus Izvekov // CHECK-SAME: <col:1, line:17:1>
434e4c0664SRaphael Isemann 
444e4c0664SRaphael Isemann void expr() {
454e4c0664SRaphael Isemann   func1();
464e4c0664SRaphael Isemann   test_namespace1::func2();
474e4c0664SRaphael Isemann   test_namespace2::test_namespace3::func3();
484e4c0664SRaphael Isemann   func4();
494e4c0664SRaphael Isemann }
50