1 // RUN: clang-diff -ast-dump %s -- -std=c++11 | FileCheck %s 2 3 4 // CHECK: {{^}}TranslationUnitDecl(0) 5 // CHECK: {{^}} NamespaceDecl: test;( 6 namespace test { 7 8 // CHECK: {{^}} FunctionDecl: :f( 9 // CHECK: CompoundStmt( 10 void f() { 11 // CHECK: VarDecl: i(int)( 12 // CHECK: IntegerLiteral: 1 13 auto i = 1; 14 // CHECK: FloatingLiteral: 1.5( 15 auto r = 1.5; 16 // CHECK: CXXBoolLiteralExpr: true( 17 auto b = true; 18 // CHECK: CallExpr( 19 // CHECK-NOT: ImplicitCastExpr 20 // CHECK: DeclRefExpr: :f( 21 f(); 22 // CHECK: UnaryOperator: ++( 23 ++i; 24 // CHECK: BinaryOperator: =( 25 i = i; 26 } 27 28 } // end namespace test 29 30 // CHECK: UsingDirectiveDecl: test( 31 using namespace test; 32 33 // CHECK: TypedefDecl: nat;unsigned int;( 34 typedef unsigned nat; 35 // CHECK: TypeAliasDecl: real;double;( 36 using real = double; 37 38 class Base { 39 }; 40 41 // CHECK: CXXRecordDecl: X;X;( 42 class X : Base { 43 int m; 44 // CHECK: CXXMethodDecl: :foo(const char *(int) 45 // CHECK: ParmVarDecl: i(int)( 46 const char *foo(int i) { 47 if (i == 0) 48 // CHECK: StringLiteral: foo( 49 return "foo"; 50 // CHECK-NOT: ImplicitCastExpr 51 return 0; 52 } 53 54 // CHECK: AccessSpecDecl: public( 55 public: 56 int not_initialized; 57 // CHECK: CXXConstructorDecl: :X(void (char, int){{( __attribute__\(\(thiscall\)\))?}})( 58 // CHECK-NEXT: ParmVarDecl: s(char) 59 // CHECK-NEXT: ParmVarDecl: (int) 60 // CHECK-NEXT: CXXCtorInitializer: Base 61 // CHECK-NEXT: CXXConstructExpr 62 // CHECK-NEXT: CXXCtorInitializer: m 63 // CHECK-NEXT: IntegerLiteral: 0 64 X(char s, int) : Base(), m(0) { 65 // CHECK-NEXT: CompoundStmt 66 // CHECK: MemberExpr: :m( 67 int x = m; 68 } 69 // CHECK: CXXConstructorDecl: :X(void (char){{( __attribute__\(\(thiscall\)\))?}})( 70 // CHECK: CXXCtorInitializer: X 71 X(char s) : X(s, 4) {} 72 }; 73 74 #define M (void)1 75 #define MA(a, b) (void)a, b 76 // CHECK: FunctionDecl 77 // CHECK-NEXT: CompoundStmt 78 void macros() { 79 M; 80 MA(1, 2); 81 } 82 83 #ifndef GUARD 84 #define GUARD 85 // CHECK-NEXT: NamespaceDecl 86 namespace world { 87 // nodes from other files are excluded, there should be no output here 88 #include "clang-diff-ast.cpp" 89 } 90 // CHECK-NEXT: FunctionDecl: sentinel 91 void sentinel(); 92 #endif 93