summaryrefslogtreecommitdiffstats
path: root/test/Tooling/clang-check-ast-dump.cpp
blob: 43686bd250c26cd0ee0dba3bcbb3d364e5babeb1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// RUN: clang-check -ast-dump "%s" -- 2>&1 | FileCheck %s
// CHECK: namespace test_namespace
// CHECK-NEXT: class TheClass
// CHECK: int theMethod(int x) (CompoundStmt
// CHECK-NEXT:   (ReturnStmt
// CHECK-NEXT:     (BinaryOperator
//
// RUN: clang-check -ast-dump -ast-dump-filter test_namespace::TheClass::theMethod "%s" -- 2>&1 | FileCheck -check-prefix CHECK-FILTER %s
// CHECK-FILTER-NOT: namespace test_namespace
// CHECK-FILTER-NOT: class TheClass
// CHECK-FILTER: int theMethod(int x) (CompoundStmt
// CHECK-FILTER-NEXT:   (ReturnStmt
// CHECK-FILTER-NEXT:     (BinaryOperator
//
// RUN: clang-check -ast-print "%s" -- 2>&1 | FileCheck -check-prefix CHECK-PRINT %s
// CHECK-PRINT: namespace test_namespace
// CHECK-PRINT: class TheClass
// CHECK-PRINT: int theMethod(int x)
//
// RUN: clang-check -ast-list "%s" -- 2>&1 | FileCheck -check-prefix CHECK-LIST %s
// CHECK-LIST: test_namespace
// CHECK-LIST-NEXT: test_namespace::TheClass
// CHECK-LIST-NEXT: test_namespace::TheClass::theMethod
// CHECK-LIST-NEXT: x
//
// RUN: clang-check -ast-dump -ast-dump-filter test_namespace::TheClass::n "%s" -- 2>&1 | FileCheck -check-prefix CHECK-ATTR %s
// CHECK-ATTR: test_namespace
// CHECK-ATTR-NEXT: int n __attribute__((aligned((BinaryOperator
//
// RUN: clang-check -ast-dump -ast-dump-filter test_namespace::AfterNullNode "%s" -- 2>&1 | FileCheck -check-prefix CHECK-AFTER-NULL %s
// CHECK-AFTER-NULL: class AfterNullNode

namespace test_namespace {

class TheClass {
public:
  int theMethod(int x) {
    return x + x;
  }
  int n __attribute__((aligned(1+1)));
};

// Used to fail with -ast-dump-filter X
template<template<typename T> class C> class Z {};

// Check that traversal continues after the previous construct.
class AfterNullNode {};

}
OpenPOWER on IntegriCloud