diff options
Diffstat (limited to 'test/Tooling/clang-diff-ast.cpp')
-rw-r--r-- | test/Tooling/clang-diff-ast.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/test/Tooling/clang-diff-ast.cpp b/test/Tooling/clang-diff-ast.cpp new file mode 100644 index 0000000000000..a8efda50a4052 --- /dev/null +++ b/test/Tooling/clang-diff-ast.cpp @@ -0,0 +1,92 @@ +// 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 |