Home | History | Annotate | Download | only in Tooling
      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 
     40 namespace test_namespace {
     41 
     42 class TheClass {
     43 public:
     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
     51 template<template<typename T> class C> class Z {};
     52 
     53 // Check that traversal continues after the previous construct.
     54 class AfterNullNode {};
     55 
     56 }
     57