1*67e74705SXin Li // RUN: clang-check -ast-dump "%s" -- 2>&1 | FileCheck %s 2*67e74705SXin Li // CHECK: NamespaceDecl{{.*}}test_namespace 3*67e74705SXin Li // CHECK-NEXT: CXXRecordDecl{{.*}}TheClass 4*67e74705SXin Li // CHECK: CXXMethodDecl{{.*}}theMethod 5*67e74705SXin Li // CHECK-NEXT: ParmVarDecl{{.*}}x 6*67e74705SXin Li // CHECK-NEXT: CompoundStmt 7*67e74705SXin Li // CHECK-NEXT: ReturnStmt 8*67e74705SXin Li // CHECK-NEXT: BinaryOperator 9*67e74705SXin Li // 10*67e74705SXin Li // RUN: clang-check -ast-dump -ast-dump-filter test_namespace::TheClass::theMethod "%s" -- 2>&1 | FileCheck -check-prefix CHECK-FILTER %s 11*67e74705SXin Li // CHECK-FILTER-NOT: NamespaceDecl 12*67e74705SXin Li // CHECK-FILTER-NOT: CXXRecordDecl 13*67e74705SXin Li // CHECK-FILTER: {{^}}Dumping test_namespace::TheClass::theMethod 14*67e74705SXin Li // CHECK-FILTER-NEXT: {{^}}CXXMethodDecl{{.*}}theMethod 15*67e74705SXin Li // CHECK-FILTER-NEXT: ParmVarDecl{{.*}}x 16*67e74705SXin Li // CHECK-FILTER-NEXT: CompoundStmt 17*67e74705SXin Li // CHECK-FILTER-NEXT: ReturnStmt 18*67e74705SXin Li // CHECK-FILTER-NEXT: BinaryOperator 19*67e74705SXin Li // 20*67e74705SXin Li // RUN: clang-check -ast-print "%s" -- 2>&1 | FileCheck -check-prefix CHECK-PRINT %s 21*67e74705SXin Li // CHECK-PRINT: namespace test_namespace 22*67e74705SXin Li // CHECK-PRINT: class TheClass 23*67e74705SXin Li // CHECK-PRINT: int theMethod(int x) 24*67e74705SXin Li // 25*67e74705SXin Li // RUN: clang-check -ast-list "%s" -- 2>&1 | FileCheck -check-prefix CHECK-LIST %s 26*67e74705SXin Li // CHECK-LIST: test_namespace 27*67e74705SXin Li // CHECK-LIST-NEXT: test_namespace::TheClass 28*67e74705SXin Li // CHECK-LIST-NEXT: test_namespace::TheClass::theMethod 29*67e74705SXin Li // CHECK-LIST-NEXT: x 30*67e74705SXin Li // 31*67e74705SXin Li // RUN: clang-check -ast-dump -ast-dump-filter test_namespace::TheClass::n "%s" -- 2>&1 | FileCheck -check-prefix CHECK-ATTR %s 32*67e74705SXin Li // CHECK-ATTR: test_namespace 33*67e74705SXin Li // CHECK-ATTR-NEXT: FieldDecl{{.*}}n 34*67e74705SXin Li // CHECK-ATTR-NEXT: AlignedAttr 35*67e74705SXin Li // CHECK-ATTR-NEXT: BinaryOperator 36*67e74705SXin Li // 37*67e74705SXin Li // RUN: clang-check -ast-dump -ast-dump-filter test_namespace::AfterNullNode "%s" -- 2>&1 | FileCheck -check-prefix CHECK-AFTER-NULL %s 38*67e74705SXin Li // CHECK-AFTER-NULL: class AfterNullNode 39*67e74705SXin Li 40*67e74705SXin Li namespace test_namespace { 41*67e74705SXin Li 42*67e74705SXin Li class TheClass { 43*67e74705SXin Li public: theMethod(int x)44*67e74705SXin Li int theMethod(int x) { 45*67e74705SXin Li return x + x; 46*67e74705SXin Li } 47*67e74705SXin Li int n __attribute__((aligned(1+1))); 48*67e74705SXin Li }; 49*67e74705SXin Li 50*67e74705SXin Li // Used to fail with -ast-dump-filter X 51*67e74705SXin Li template<template<typename T> class C> class Z {}; 52*67e74705SXin Li 53*67e74705SXin Li // Check that traversal continues after the previous construct. 54*67e74705SXin Li class AfterNullNode {}; 55*67e74705SXin Li 56*67e74705SXin Li } 57