blob: 90827e10b776cde783e9f94bc4055002b9d567be [file] [log] [blame]
Alexander Kornienko48464702012-08-13 10:50:08 +00001// RUN: clang-check -ast-dump "%s" -- 2>&1 | FileCheck %s
Alexander Kornienkod538ed92012-12-20 02:09:13 +00002// CHECK: (NamespaceDecl{{.*}}test_namespace
3// CHECK-NEXT: (CXXRecordDecl{{.*}}TheClass
4// CHECK: (CXXMethodDecl{{.*}}theMethod
5// CHECK-NEXT: (ParmVarDecl{{.*}}x
6// CHECK-NEXT: (CompoundStmt
Alexander Kornienko48464702012-08-13 10:50:08 +00007// 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
Alexander Kornienkod538ed92012-12-20 02:09:13 +000011// CHECK-FILTER-NOT: NamespaceDecl
12// CHECK-FILTER-NOT: CXXRecordDecl
Dmitri Gribenko0061fe42012-11-21 10:54:55 +000013// CHECK-FILTER: {{^}}Dumping test_namespace::TheClass::theMethod
Alexander Kornienkod538ed92012-12-20 02:09:13 +000014// CHECK-FILTER-NEXT: {{^}}(CXXMethodDecl{{.*}}theMethod
15// CHECK-FILTER-NEXT: (ParmVarDecl{{.*}}x
16// CHECK-FILTER-NEXT: (CompoundStmt
Alexander Kornienko48464702012-08-13 10:50:08 +000017// 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
Richard Smith0dae7292012-08-16 02:43:29 +000030//
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
Alexander Kornienkod538ed92012-12-20 02:09:13 +000033// CHECK-ATTR-NEXT: (FieldDecl{{.*}}n
34// FIXME: attribute dumping not implemented yet
Alexander Kornienko30280382012-10-31 18:46:31 +000035//
36// RUN: clang-check -ast-dump -ast-dump-filter test_namespace::AfterNullNode "%s" -- 2>&1 | FileCheck -check-prefix CHECK-AFTER-NULL %s
37// CHECK-AFTER-NULL: class AfterNullNode
Alexander Kornienko48464702012-08-13 10:50:08 +000038
39namespace test_namespace {
40
41class TheClass {
42public:
43 int theMethod(int x) {
44 return x + x;
45 }
Richard Smith0dae7292012-08-16 02:43:29 +000046 int n __attribute__((aligned(1+1)));
Alexander Kornienko48464702012-08-13 10:50:08 +000047};
48
Alexander Kornienkoa7612ae2012-08-17 17:38:39 +000049// Used to fail with -ast-dump-filter X
50template<template<typename T> class C> class Z {};
51
Alexander Kornienko30280382012-10-31 18:46:31 +000052// Check that traversal continues after the previous construct.
53class AfterNullNode {};
54
Alexander Kornienko48464702012-08-13 10:50:08 +000055}