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