clang-check-ast-dump.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. namespace test_namespace {
  40. class TheClass {
  41. public:
  42. int theMethod(int x) {
  43. return x + x;
  44. }
  45. int n __attribute__((aligned(1+1)));
  46. };
  47. // Used to fail with -ast-dump-filter X
  48. template<template<typename T> class C> class Z {};
  49. // Check that traversal continues after the previous construct.
  50. class AfterNullNode {};
  51. }