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