| // 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 |