| // RUN: clang-diff -ast-dump %s -- -std=c++11 | FileCheck %s | |
| // CHECK: {{^}}TranslationUnitDecl(0) | |
| // CHECK: {{^}} NamespaceDecl: test;( | |
| namespace test { | |
| // CHECK: {{^}} FunctionDecl: :f( | |
| // CHECK: CompoundStmt( | |
| void f() { | |
| // CHECK: VarDecl: i(int)( | |
| // CHECK: IntegerLiteral: 1 | |
| auto i = 1; | |
| // CHECK: FloatingLiteral: 1.5( | |
| auto r = 1.5; | |
| // CHECK: CXXBoolLiteralExpr: true( | |
| auto b = true; | |
| // CHECK: CallExpr( | |
| // CHECK-NOT: ImplicitCastExpr | |
| // CHECK: DeclRefExpr: :f( | |
| f(); | |
| // CHECK: UnaryOperator: ++( | |
| ++i; | |
| // CHECK: BinaryOperator: =( | |
| i = i; | |
| } | |
| } // end namespace test | |
| // CHECK: UsingDirectiveDecl: test( | |
| using namespace test; | |
| // CHECK: TypedefDecl: nat;unsigned int;( | |
| typedef unsigned nat; | |
| // CHECK: TypeAliasDecl: real;double;( | |
| using real = double; | |
| class Base { | |
| }; | |
| // CHECK: CXXRecordDecl: X;X;( | |
| class X : Base { | |
| int m; | |
| // CHECK: CXXMethodDecl: :foo(const char *(int) | |
| // CHECK: ParmVarDecl: i(int)( | |
| const char *foo(int i) { | |
| if (i == 0) | |
| // CHECK: StringLiteral: foo( | |
| return "foo"; | |
| // CHECK-NOT: ImplicitCastExpr | |
| return 0; | |
| } | |
| // CHECK: AccessSpecDecl: public( | |
| public: | |
| int not_initialized; | |
| // CHECK: CXXConstructorDecl: :X(void (char, int){{( __attribute__\(\(thiscall\)\))?}})( | |
| // CHECK-NEXT: ParmVarDecl: s(char) | |
| // CHECK-NEXT: ParmVarDecl: (int) | |
| // CHECK-NEXT: CXXCtorInitializer: Base | |
| // CHECK-NEXT: CXXConstructExpr | |
| // CHECK-NEXT: CXXCtorInitializer: m | |
| // CHECK-NEXT: IntegerLiteral: 0 | |
| X(char s, int) : Base(), m(0) { | |
| // CHECK-NEXT: CompoundStmt | |
| // CHECK: MemberExpr: :m( | |
| int x = m; | |
| } | |
| // CHECK: CXXConstructorDecl: :X(void (char){{( __attribute__\(\(thiscall\)\))?}})( | |
| // CHECK: CXXCtorInitializer: X | |
| X(char s) : X(s, 4) {} | |
| }; | |
| #define M (void)1 | |
| #define MA(a, b) (void)a, b | |
| // CHECK: FunctionDecl | |
| // CHECK-NEXT: CompoundStmt | |
| void macros() { | |
| M; | |
| MA(1, 2); | |
| } | |
| #ifndef GUARD | |
| #define GUARD | |
| // CHECK-NEXT: NamespaceDecl | |
| namespace world { | |
| // nodes from other files are excluded, there should be no output here | |
| #include "clang-diff-ast.cpp" | |
| } | |
| // CHECK-NEXT: FunctionDecl: sentinel | |
| void sentinel(); | |
| #endif |