r361764 - Add test cases for dumping AST expression nodes to JSON; NFC.

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Sat Jun 1 00:48:09 PDT 2019


On Sat, 1 Jun 2019, 00:39 Aaron Ballman via cfe-commits, <
cfe-commits at lists.llvm.org> wrote:

> Gladly, this was already generated by script which I planned to upstream
> once we finished working the kinks out of it. However, I'm currently out on
> vacation and don't have that script with me. Can this wait until I return?
>

Sure, no rush.

~Aaron
>
> On Fri, May 31, 2019, 11:12 PM Richard Smith <richard at metafoo.co.uk>
> wrote:
>
>> It's only been a few days, and this new test already seems to be creating
>> a significant maintenance burden.
>>
>> Do you think you could provide a script to regenerate the test
>> expectations, to reduce the burden here?
>>
>> On Mon, 27 May 2019 at 07:09, Aaron Ballman via cfe-commits <
>> cfe-commits at lists.llvm.org> wrote:
>>
>>> Author: aaronballman
>>> Date: Mon May 27 07:12:48 2019
>>> New Revision: 361764
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=361764&view=rev
>>> Log:
>>> Add test cases for dumping AST expression nodes to JSON; NFC.
>>>
>>> Added:
>>>     cfe/trunk/test/AST/ast-dump-expr-json.cpp
>>>
>>> Added: cfe/trunk/test/AST/ast-dump-expr-json.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-expr-json.cpp?rev=361764&view=auto
>>>
>>> ==============================================================================
>>> --- cfe/trunk/test/AST/ast-dump-expr-json.cpp (added)
>>> +++ cfe/trunk/test/AST/ast-dump-expr-json.cpp Mon May 27 07:12:48 2019
>>> @@ -0,0 +1,8992 @@
>>> +// RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value
>>> -fcxx-exceptions -std=gnu++17 -ast-dump=json -ast-dump-filter Test %s |
>>> FileCheck %s
>>> +
>>> +namespace std {
>>> +using size_t = decltype(sizeof(0));
>>> +
>>> +class type_info {
>>> +public:
>>> +  virtual ~type_info();
>>> +  bool operator==(const type_info& rhs) const noexcept;
>>> +  bool operator!=(const type_info& rhs) const noexcept;
>>> +  type_info(const type_info& rhs) = delete; // cannot be copied
>>> +  type_info& operator=(const type_info& rhs) = delete; // cannot be
>>> copied
>>> +};
>>> +
>>> +class bad_typeid {
>>> +public:
>>> +  bad_typeid() noexcept;
>>> +  bad_typeid(const bad_typeid&) noexcept;
>>> +  virtual ~bad_typeid();
>>> +  bad_typeid& operator=(const bad_typeid&) noexcept;
>>> +  const char* what() const noexcept;
>>> +};
>>> +} // namespace std
>>> +void *operator new(std::size_t, void *ptr);
>>> +
>>> +struct S {
>>> +  virtual ~S() = default;
>>> +
>>> +  void func(int);
>>> +  template <typename Ty>
>>> +  Ty foo();
>>> +
>>> +  int i;
>>> +};
>>> +
>>> +struct T : S {};
>>> +
>>> +template <typename>
>>> +struct U {};
>>> +
>>> +void TestThrow() {
>>> +  throw 12;
>>> +  throw;
>>> +}
>>> +
>>> +void TestPointerToMember(S obj1, S *obj2, int S::* data, void
>>> (S::*call)(int)) {
>>> +  obj1.*data;
>>> +  obj2->*data;
>>> +  (obj1.*call)(12);
>>> +  (obj2->*call)(12);
>>> +}
>>> +
>>> +void TestCasting(const S *s) {
>>> +  const_cast<S *>(s);
>>> +  static_cast<const T *>(s);
>>> +  dynamic_cast<const T *>(s);
>>> +  reinterpret_cast<const int *>(s);
>>> +}
>>> +
>>> +template <typename... Ts>
>>> +void TestUnaryExpressions(int *p) {
>>> +  sizeof...(Ts);
>>> +  noexcept(p - p);
>>> +
>>> +  ::new int;
>>> +  new (int);
>>> +  new int{12};
>>> +  new int[2];
>>> +  new int[2]{1, 2};
>>> +  new (p) int;
>>> +  new (p) int{12};
>>> +
>>> +  ::delete p;
>>> +  delete [] p;
>>> +}
>>> +
>>> +void TestPostfixExpressions(S a, S *p, U<int> *r) {
>>> +  a.func(0);
>>> +  p->func(0);
>>> +  p->template foo<int>();
>>> +  a.template foo<float>();
>>> +  p->~S();
>>> +  a.~S();
>>> +  a.~decltype(a)();
>>> +  p->::S::~S();
>>> +  r->template U<int>::~U();
>>> +  typeid(a);
>>> +  typeid(S);
>>> +  typeid(const volatile S);
>>> +}
>>> +
>>> +template <typename... Ts>
>>> +void TestPrimaryExpressions(Ts... a) {
>>> +  struct V {
>>> +    void f() {
>>> +      this;
>>> +
>>> +      [this]{};
>>> +      [*this]{};
>>> +    }
>>> +  };
>>> +
>>> +  int b, c;
>>> +
>>> +  [](){};
>>> +  [](int a, ...){};
>>> +  [a...]{};
>>> +  [=]{};
>>> +  [=] { return b; };
>>> +  [&]{};
>>> +  [&] { return c; };
>>> +  [b, &c]{ return b + c; };
>>> +  [a..., x = 12]{};
>>> +  []() constexpr {};
>>> +  []() mutable {};
>>> +  []() noexcept {};
>>> +  []() -> int { return 0; };
>>> +
>>> +  (a + ...);
>>> +  (... + a);
>>> +  (a + ... + b);
>>> +}
>>> +
>>> +namespace NS {
>>> +struct X {};
>>> +void f(X);
>>> +void y(...);
>>> +} // namespace NS
>>> +
>>> +void TestADLCall() {
>>> +  NS::X x;
>>> +  f(x);
>>> +  y(x);
>>> +}
>>> +
>>> +void TestNonADLCall() {
>>> +  NS::X x;
>>> +  NS::f(x);
>>> +}
>>> +
>>> +void TestNonADLCall2() {
>>> +  NS::X x;
>>> +  using NS::f;
>>> +  f(x);
>>> +  y(x);
>>> +}
>>> +
>>> +namespace test_adl_call_three {
>>> +using namespace NS;
>>> +void TestNonADLCall3() {
>>> +  X x;
>>> +  f(x);
>>> +}
>>> +} // namespace test_adl_call_three
>>> +
>>> +
>>> +// CHECK:  "kind": "FunctionDecl",
>>> +// CHECK-NEXT:  "loc": {
>>> +// CHECK-NEXT:   "col": 6,
>>> +// CHECK-NEXT:   "file": "{{.*}}",
>>> +// CHECK-NEXT:   "line": 41
>>> +// CHECK-NEXT:  },
>>> +// CHECK-NEXT:  "range": {
>>> +// CHECK-NEXT:   "begin": {
>>> +// CHECK-NEXT:    "col": 1,
>>> +// CHECK-NEXT:    "file": "{{.*}}",
>>> +// CHECK-NEXT:    "line": 41
>>> +// CHECK-NEXT:   },
>>> +// CHECK-NEXT:   "end": {
>>> +// CHECK-NEXT:    "col": 1,
>>> +// CHECK-NEXT:    "file": "{{.*}}",
>>> +// CHECK-NEXT:    "line": 44
>>> +// CHECK-NEXT:   }
>>> +// CHECK-NEXT:  },
>>> +// CHECK-NEXT:  "name": "TestThrow",
>>> +// CHECK-NEXT:  "type": {
>>> +// CHECK-NEXT:   "qualType": "void ()"
>>> +// CHECK-NEXT:  },
>>> +// CHECK-NEXT:  "inner": [
>>> +// CHECK-NEXT:   {
>>> +// CHECK-NEXT:    "id": "0x{{.*}}",
>>> +// CHECK-NEXT:    "kind": "CompoundStmt",
>>> +// CHECK-NEXT:    "range": {
>>> +// CHECK-NEXT:     "begin": {
>>> +// CHECK-NEXT:      "col": 18,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 41
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     "end": {
>>> +// CHECK-NEXT:      "col": 1,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 44
>>> +// CHECK-NEXT:     }
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "inner": [
>>> +// CHECK-NEXT:     {
>>> +// CHECK-NEXT:      "id": "0x{{.*}}",
>>> +// CHECK-NEXT:      "kind": "CXXThrowExpr",
>>> +// CHECK-NEXT:      "range": {
>>> +// CHECK-NEXT:       "begin": {
>>> +// CHECK-NEXT:        "col": 3,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 42
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       "end": {
>>> +// CHECK-NEXT:        "col": 9,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 42
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "type": {
>>> +// CHECK-NEXT:       "qualType": "void"
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "valueCategory": "rvalue",
>>> +// CHECK-NEXT:      "inner": [
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "IntegerLiteral",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 9,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 42
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 9,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 42
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "int"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "value": "12"
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      ]
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     {
>>> +// CHECK-NEXT:      "id": "0x{{.*}}",
>>> +// CHECK-NEXT:      "kind": "CXXThrowExpr",
>>> +// CHECK-NEXT:      "range": {
>>> +// CHECK-NEXT:       "begin": {
>>> +// CHECK-NEXT:        "col": 3,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 43
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       "end": {
>>> +// CHECK-NEXT:        "col": 3,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 43
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "type": {
>>> +// CHECK-NEXT:       "qualType": "void"
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "valueCategory": "rvalue"
>>> +// CHECK-NEXT:     }
>>> +// CHECK-NEXT:    ]
>>> +// CHECK-NEXT:   }
>>> +// CHECK-NEXT:  ]
>>> +// CHECK-NEXT: }
>>> +
>>> +
>>> +// CHECK:  "kind": "FunctionDecl",
>>> +// CHECK-NEXT:  "loc": {
>>> +// CHECK-NEXT:   "col": 6,
>>> +// CHECK-NEXT:   "file": "{{.*}}",
>>> +// CHECK-NEXT:   "line": 46
>>> +// CHECK-NEXT:  },
>>> +// CHECK-NEXT:  "range": {
>>> +// CHECK-NEXT:   "begin": {
>>> +// CHECK-NEXT:    "col": 1,
>>> +// CHECK-NEXT:    "file": "{{.*}}",
>>> +// CHECK-NEXT:    "line": 46
>>> +// CHECK-NEXT:   },
>>> +// CHECK-NEXT:   "end": {
>>> +// CHECK-NEXT:    "col": 1,
>>> +// CHECK-NEXT:    "file": "{{.*}}",
>>> +// CHECK-NEXT:    "line": 51
>>> +// CHECK-NEXT:   }
>>> +// CHECK-NEXT:  },
>>> +// CHECK-NEXT:  "name": "TestPointerToMember",
>>> +// CHECK-NEXT:  "type": {
>>> +// CHECK-NEXT:   "qualType": "void (S, S *, int S::*, void (S::*)(int))"
>>> +// CHECK-NEXT:  },
>>> +// CHECK-NEXT:  "inner": [
>>> +// CHECK-NEXT:   {
>>> +// CHECK-NEXT:    "id": "0x{{.*}}",
>>> +// CHECK-NEXT:    "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:    "loc": {
>>> +// CHECK-NEXT:     "col": 28,
>>> +// CHECK-NEXT:     "file": "{{.*}}",
>>> +// CHECK-NEXT:     "line": 46
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "range": {
>>> +// CHECK-NEXT:     "begin": {
>>> +// CHECK-NEXT:      "col": 26,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 46
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     "end": {
>>> +// CHECK-NEXT:      "col": 28,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 46
>>> +// CHECK-NEXT:     }
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "isUsed": true,
>>> +// CHECK-NEXT:    "name": "obj1",
>>> +// CHECK-NEXT:    "type": {
>>> +// CHECK-NEXT:     "qualType": "S"
>>> +// CHECK-NEXT:    }
>>> +// CHECK-NEXT:   },
>>> +// CHECK-NEXT:   {
>>> +// CHECK-NEXT:    "id": "0x{{.*}}",
>>> +// CHECK-NEXT:    "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:    "loc": {
>>> +// CHECK-NEXT:     "col": 37,
>>> +// CHECK-NEXT:     "file": "{{.*}}",
>>> +// CHECK-NEXT:     "line": 46
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "range": {
>>> +// CHECK-NEXT:     "begin": {
>>> +// CHECK-NEXT:      "col": 34,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 46
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     "end": {
>>> +// CHECK-NEXT:      "col": 37,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 46
>>> +// CHECK-NEXT:     }
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "isUsed": true,
>>> +// CHECK-NEXT:    "name": "obj2",
>>> +// CHECK-NEXT:    "type": {
>>> +// CHECK-NEXT:     "qualType": "S *"
>>> +// CHECK-NEXT:    }
>>> +// CHECK-NEXT:   },
>>> +// CHECK-NEXT:   {
>>> +// CHECK-NEXT:    "id": "0x{{.*}}",
>>> +// CHECK-NEXT:    "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:    "loc": {
>>> +// CHECK-NEXT:     "col": 52,
>>> +// CHECK-NEXT:     "file": "{{.*}}",
>>> +// CHECK-NEXT:     "line": 46
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "range": {
>>> +// CHECK-NEXT:     "begin": {
>>> +// CHECK-NEXT:      "col": 43,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 46
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     "end": {
>>> +// CHECK-NEXT:      "col": 52,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 46
>>> +// CHECK-NEXT:     }
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "isUsed": true,
>>> +// CHECK-NEXT:    "name": "data",
>>> +// CHECK-NEXT:    "type": {
>>> +// CHECK-NEXT:     "qualType": "int S::*"
>>> +// CHECK-NEXT:    }
>>> +// CHECK-NEXT:   },
>>> +// CHECK-NEXT:   {
>>> +// CHECK-NEXT:    "id": "0x{{.*}}",
>>> +// CHECK-NEXT:    "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:    "loc": {
>>> +// CHECK-NEXT:     "col": 68,
>>> +// CHECK-NEXT:     "file": "{{.*}}",
>>> +// CHECK-NEXT:     "line": 46
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "range": {
>>> +// CHECK-NEXT:     "begin": {
>>> +// CHECK-NEXT:      "col": 58,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 46
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     "end": {
>>> +// CHECK-NEXT:      "col": 77,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 46
>>> +// CHECK-NEXT:     }
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "isUsed": true,
>>> +// CHECK-NEXT:    "name": "call",
>>> +// CHECK-NEXT:    "type": {
>>> +// CHECK-NEXT:     "qualType": "void (S::*)(int)"
>>> +// CHECK-NEXT:    }
>>> +// CHECK-NEXT:   },
>>> +// CHECK-NEXT:   {
>>> +// CHECK-NEXT:    "id": "0x{{.*}}",
>>> +// CHECK-NEXT:    "kind": "CompoundStmt",
>>> +// CHECK-NEXT:    "range": {
>>> +// CHECK-NEXT:     "begin": {
>>> +// CHECK-NEXT:      "col": 80,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 46
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     "end": {
>>> +// CHECK-NEXT:      "col": 1,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 51
>>> +// CHECK-NEXT:     }
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "inner": [
>>> +// CHECK-NEXT:     {
>>> +// CHECK-NEXT:      "id": "0x{{.*}}",
>>> +// CHECK-NEXT:      "kind": "BinaryOperator",
>>> +// CHECK-NEXT:      "range": {
>>> +// CHECK-NEXT:       "begin": {
>>> +// CHECK-NEXT:        "col": 3,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 47
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       "end": {
>>> +// CHECK-NEXT:        "col": 9,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 47
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "type": {
>>> +// CHECK-NEXT:       "qualType": "int"
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "valueCategory": "lvalue",
>>> +// CHECK-NEXT:      "opcode": ".*",
>>> +// CHECK-NEXT:      "inner": [
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 3,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 47
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 3,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 47
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "S"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "lvalue",
>>> +// CHECK-NEXT:        "referencedDecl": {
>>> +// CHECK-NEXT:         "id": "0x{{.*}}",
>>> +// CHECK-NEXT:         "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:         "name": "obj1",
>>> +// CHECK-NEXT:         "type": {
>>> +// CHECK-NEXT:          "qualType": "S"
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        }
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 9,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 47
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 9,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 47
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "int S::*"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "castKind": "LValueToRValue",
>>> +// CHECK-NEXT:        "inner": [
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:          "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:          "range": {
>>> +// CHECK-NEXT:           "begin": {
>>> +// CHECK-NEXT:            "col": 9,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 47
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           "end": {
>>> +// CHECK-NEXT:            "col": 9,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 47
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "type": {
>>> +// CHECK-NEXT:           "qualType": "int S::*"
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "valueCategory": "lvalue",
>>> +// CHECK-NEXT:          "referencedDecl": {
>>> +// CHECK-NEXT:           "id": "0x{{.*}}",
>>> +// CHECK-NEXT:           "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:           "name": "data",
>>> +// CHECK-NEXT:           "type": {
>>> +// CHECK-NEXT:            "qualType": "int S::*"
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          }
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        ]
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      ]
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     {
>>> +// CHECK-NEXT:      "id": "0x{{.*}}",
>>> +// CHECK-NEXT:      "kind": "BinaryOperator",
>>> +// CHECK-NEXT:      "range": {
>>> +// CHECK-NEXT:       "begin": {
>>> +// CHECK-NEXT:        "col": 3,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 48
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       "end": {
>>> +// CHECK-NEXT:        "col": 10,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 48
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "type": {
>>> +// CHECK-NEXT:       "qualType": "int"
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "valueCategory": "lvalue",
>>> +// CHECK-NEXT:      "opcode": "->*",
>>> +// CHECK-NEXT:      "inner": [
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 3,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 48
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 3,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 48
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "S *"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "castKind": "LValueToRValue",
>>> +// CHECK-NEXT:        "inner": [
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:          "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:          "range": {
>>> +// CHECK-NEXT:           "begin": {
>>> +// CHECK-NEXT:            "col": 3,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 48
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           "end": {
>>> +// CHECK-NEXT:            "col": 3,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 48
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "type": {
>>> +// CHECK-NEXT:           "qualType": "S *"
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "valueCategory": "lvalue",
>>> +// CHECK-NEXT:          "referencedDecl": {
>>> +// CHECK-NEXT:           "id": "0x{{.*}}",
>>> +// CHECK-NEXT:           "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:           "name": "obj2",
>>> +// CHECK-NEXT:           "type": {
>>> +// CHECK-NEXT:            "qualType": "S *"
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          }
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        ]
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 10,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 48
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 10,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 48
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "int S::*"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "castKind": "LValueToRValue",
>>> +// CHECK-NEXT:        "inner": [
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:          "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:          "range": {
>>> +// CHECK-NEXT:           "begin": {
>>> +// CHECK-NEXT:            "col": 10,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 48
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           "end": {
>>> +// CHECK-NEXT:            "col": 10,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 48
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "type": {
>>> +// CHECK-NEXT:           "qualType": "int S::*"
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "valueCategory": "lvalue",
>>> +// CHECK-NEXT:          "referencedDecl": {
>>> +// CHECK-NEXT:           "id": "0x{{.*}}",
>>> +// CHECK-NEXT:           "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:           "name": "data",
>>> +// CHECK-NEXT:           "type": {
>>> +// CHECK-NEXT:            "qualType": "int S::*"
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          }
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        ]
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      ]
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     {
>>> +// CHECK-NEXT:      "id": "0x{{.*}}",
>>> +// CHECK-NEXT:      "kind": "CXXMemberCallExpr",
>>> +// CHECK-NEXT:      "range": {
>>> +// CHECK-NEXT:       "begin": {
>>> +// CHECK-NEXT:        "col": 3,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 49
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       "end": {
>>> +// CHECK-NEXT:        "col": 18,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 49
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "type": {
>>> +// CHECK-NEXT:       "qualType": "void"
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "valueCategory": "rvalue",
>>> +// CHECK-NEXT:      "inner": [
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "ParenExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 3,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 49
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 14,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 49
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "<bound member function type>"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "inner": [
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:          "kind": "BinaryOperator",
>>> +// CHECK-NEXT:          "range": {
>>> +// CHECK-NEXT:           "begin": {
>>> +// CHECK-NEXT:            "col": 4,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 49
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           "end": {
>>> +// CHECK-NEXT:            "col": 10,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 49
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "type": {
>>> +// CHECK-NEXT:           "qualType": "<bound member function type>"
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "valueCategory": "rvalue",
>>> +// CHECK-NEXT:          "opcode": ".*",
>>> +// CHECK-NEXT:          "inner": [
>>> +// CHECK-NEXT:           {
>>> +// CHECK-NEXT:            "id": "0x{{.*}}",
>>> +// CHECK-NEXT:            "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:            "range": {
>>> +// CHECK-NEXT:             "begin": {
>>> +// CHECK-NEXT:              "col": 4,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 49
>>> +// CHECK-NEXT:             },
>>> +// CHECK-NEXT:             "end": {
>>> +// CHECK-NEXT:              "col": 4,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 49
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "type": {
>>> +// CHECK-NEXT:             "qualType": "S"
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "valueCategory": "lvalue",
>>> +// CHECK-NEXT:            "referencedDecl": {
>>> +// CHECK-NEXT:             "id": "0x{{.*}}",
>>> +// CHECK-NEXT:             "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:             "name": "obj1",
>>> +// CHECK-NEXT:             "type": {
>>> +// CHECK-NEXT:              "qualType": "S"
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            }
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           {
>>> +// CHECK-NEXT:            "id": "0x{{.*}}",
>>> +// CHECK-NEXT:            "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:            "range": {
>>> +// CHECK-NEXT:             "begin": {
>>> +// CHECK-NEXT:              "col": 10,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 49
>>> +// CHECK-NEXT:             },
>>> +// CHECK-NEXT:             "end": {
>>> +// CHECK-NEXT:              "col": 10,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 49
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "type": {
>>> +// CHECK-NEXT:             "qualType": "void (S::*)(int)"
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "valueCategory": "rvalue",
>>> +// CHECK-NEXT:            "castKind": "LValueToRValue",
>>> +// CHECK-NEXT:            "inner": [
>>> +// CHECK-NEXT:             {
>>> +// CHECK-NEXT:              "id": "0x{{.*}}",
>>> +// CHECK-NEXT:              "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:              "range": {
>>> +// CHECK-NEXT:               "begin": {
>>> +// CHECK-NEXT:                "col": 10,
>>> +// CHECK-NEXT:                "file": "{{.*}}",
>>> +// CHECK-NEXT:                "line": 49
>>> +// CHECK-NEXT:               },
>>> +// CHECK-NEXT:               "end": {
>>> +// CHECK-NEXT:                "col": 10,
>>> +// CHECK-NEXT:                "file": "{{.*}}",
>>> +// CHECK-NEXT:                "line": 49
>>> +// CHECK-NEXT:               }
>>> +// CHECK-NEXT:              },
>>> +// CHECK-NEXT:              "type": {
>>> +// CHECK-NEXT:               "qualType": "void (S::*)(int)"
>>> +// CHECK-NEXT:              },
>>> +// CHECK-NEXT:              "valueCategory": "lvalue",
>>> +// CHECK-NEXT:              "referencedDecl": {
>>> +// CHECK-NEXT:               "id": "0x{{.*}}",
>>> +// CHECK-NEXT:               "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:               "name": "call",
>>> +// CHECK-NEXT:               "type": {
>>> +// CHECK-NEXT:                "qualType": "void (S::*)(int)"
>>> +// CHECK-NEXT:               }
>>> +// CHECK-NEXT:              }
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            ]
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          ]
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        ]
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "IntegerLiteral",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 16,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 49
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 16,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 49
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "int"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "value": "12"
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      ]
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     {
>>> +// CHECK-NEXT:      "id": "0x{{.*}}",
>>> +// CHECK-NEXT:      "kind": "CXXMemberCallExpr",
>>> +// CHECK-NEXT:      "range": {
>>> +// CHECK-NEXT:       "begin": {
>>> +// CHECK-NEXT:        "col": 3,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 50
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       "end": {
>>> +// CHECK-NEXT:        "col": 19,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 50
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "type": {
>>> +// CHECK-NEXT:       "qualType": "void"
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "valueCategory": "rvalue",
>>> +// CHECK-NEXT:      "inner": [
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "ParenExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 3,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 50
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 15,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 50
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "<bound member function type>"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "inner": [
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:          "kind": "BinaryOperator",
>>> +// CHECK-NEXT:          "range": {
>>> +// CHECK-NEXT:           "begin": {
>>> +// CHECK-NEXT:            "col": 4,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 50
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           "end": {
>>> +// CHECK-NEXT:            "col": 11,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 50
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "type": {
>>> +// CHECK-NEXT:           "qualType": "<bound member function type>"
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "valueCategory": "rvalue",
>>> +// CHECK-NEXT:          "opcode": "->*",
>>> +// CHECK-NEXT:          "inner": [
>>> +// CHECK-NEXT:           {
>>> +// CHECK-NEXT:            "id": "0x{{.*}}",
>>> +// CHECK-NEXT:            "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:            "range": {
>>> +// CHECK-NEXT:             "begin": {
>>> +// CHECK-NEXT:              "col": 4,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 50
>>> +// CHECK-NEXT:             },
>>> +// CHECK-NEXT:             "end": {
>>> +// CHECK-NEXT:              "col": 4,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 50
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "type": {
>>> +// CHECK-NEXT:             "qualType": "S *"
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "valueCategory": "rvalue",
>>> +// CHECK-NEXT:            "castKind": "LValueToRValue",
>>> +// CHECK-NEXT:            "inner": [
>>> +// CHECK-NEXT:             {
>>> +// CHECK-NEXT:              "id": "0x{{.*}}",
>>> +// CHECK-NEXT:              "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:              "range": {
>>> +// CHECK-NEXT:               "begin": {
>>> +// CHECK-NEXT:                "col": 4,
>>> +// CHECK-NEXT:                "file": "{{.*}}",
>>> +// CHECK-NEXT:                "line": 50
>>> +// CHECK-NEXT:               },
>>> +// CHECK-NEXT:               "end": {
>>> +// CHECK-NEXT:                "col": 4,
>>> +// CHECK-NEXT:                "file": "{{.*}}",
>>> +// CHECK-NEXT:                "line": 50
>>> +// CHECK-NEXT:               }
>>> +// CHECK-NEXT:              },
>>> +// CHECK-NEXT:              "type": {
>>> +// CHECK-NEXT:               "qualType": "S *"
>>> +// CHECK-NEXT:              },
>>> +// CHECK-NEXT:              "valueCategory": "lvalue",
>>> +// CHECK-NEXT:              "referencedDecl": {
>>> +// CHECK-NEXT:               "id": "0x{{.*}}",
>>> +// CHECK-NEXT:               "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:               "name": "obj2",
>>> +// CHECK-NEXT:               "type": {
>>> +// CHECK-NEXT:                "qualType": "S *"
>>> +// CHECK-NEXT:               }
>>> +// CHECK-NEXT:              }
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            ]
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           {
>>> +// CHECK-NEXT:            "id": "0x{{.*}}",
>>> +// CHECK-NEXT:            "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:            "range": {
>>> +// CHECK-NEXT:             "begin": {
>>> +// CHECK-NEXT:              "col": 11,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 50
>>> +// CHECK-NEXT:             },
>>> +// CHECK-NEXT:             "end": {
>>> +// CHECK-NEXT:              "col": 11,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 50
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "type": {
>>> +// CHECK-NEXT:             "qualType": "void (S::*)(int)"
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "valueCategory": "rvalue",
>>> +// CHECK-NEXT:            "castKind": "LValueToRValue",
>>> +// CHECK-NEXT:            "inner": [
>>> +// CHECK-NEXT:             {
>>> +// CHECK-NEXT:              "id": "0x{{.*}}",
>>> +// CHECK-NEXT:              "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:              "range": {
>>> +// CHECK-NEXT:               "begin": {
>>> +// CHECK-NEXT:                "col": 11,
>>> +// CHECK-NEXT:                "file": "{{.*}}",
>>> +// CHECK-NEXT:                "line": 50
>>> +// CHECK-NEXT:               },
>>> +// CHECK-NEXT:               "end": {
>>> +// CHECK-NEXT:                "col": 11,
>>> +// CHECK-NEXT:                "file": "{{.*}}",
>>> +// CHECK-NEXT:                "line": 50
>>> +// CHECK-NEXT:               }
>>> +// CHECK-NEXT:              },
>>> +// CHECK-NEXT:              "type": {
>>> +// CHECK-NEXT:               "qualType": "void (S::*)(int)"
>>> +// CHECK-NEXT:              },
>>> +// CHECK-NEXT:              "valueCategory": "lvalue",
>>> +// CHECK-NEXT:              "referencedDecl": {
>>> +// CHECK-NEXT:               "id": "0x{{.*}}",
>>> +// CHECK-NEXT:               "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:               "name": "call",
>>> +// CHECK-NEXT:               "type": {
>>> +// CHECK-NEXT:                "qualType": "void (S::*)(int)"
>>> +// CHECK-NEXT:               }
>>> +// CHECK-NEXT:              }
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            ]
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          ]
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        ]
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "IntegerLiteral",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 17,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 50
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 17,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 50
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "int"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "value": "12"
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      ]
>>> +// CHECK-NEXT:     }
>>> +// CHECK-NEXT:    ]
>>> +// CHECK-NEXT:   }
>>> +// CHECK-NEXT:  ]
>>> +// CHECK-NEXT: }
>>> +
>>> +
>>> +// CHECK:  "kind": "FunctionDecl",
>>> +// CHECK-NEXT:  "loc": {
>>> +// CHECK-NEXT:   "col": 6,
>>> +// CHECK-NEXT:   "file": "{{.*}}",
>>> +// CHECK-NEXT:   "line": 53
>>> +// CHECK-NEXT:  },
>>> +// CHECK-NEXT:  "range": {
>>> +// CHECK-NEXT:   "begin": {
>>> +// CHECK-NEXT:    "col": 1,
>>> +// CHECK-NEXT:    "file": "{{.*}}",
>>> +// CHECK-NEXT:    "line": 53
>>> +// CHECK-NEXT:   },
>>> +// CHECK-NEXT:   "end": {
>>> +// CHECK-NEXT:    "col": 1,
>>> +// CHECK-NEXT:    "file": "{{.*}}",
>>> +// CHECK-NEXT:    "line": 58
>>> +// CHECK-NEXT:   }
>>> +// CHECK-NEXT:  },
>>> +// CHECK-NEXT:  "name": "TestCasting",
>>> +// CHECK-NEXT:  "type": {
>>> +// CHECK-NEXT:   "qualType": "void (const S *)"
>>> +// CHECK-NEXT:  },
>>> +// CHECK-NEXT:  "inner": [
>>> +// CHECK-NEXT:   {
>>> +// CHECK-NEXT:    "id": "0x{{.*}}",
>>> +// CHECK-NEXT:    "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:    "loc": {
>>> +// CHECK-NEXT:     "col": 27,
>>> +// CHECK-NEXT:     "file": "{{.*}}",
>>> +// CHECK-NEXT:     "line": 53
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "range": {
>>> +// CHECK-NEXT:     "begin": {
>>> +// CHECK-NEXT:      "col": 18,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 53
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     "end": {
>>> +// CHECK-NEXT:      "col": 27,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 53
>>> +// CHECK-NEXT:     }
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "isUsed": true,
>>> +// CHECK-NEXT:    "name": "s",
>>> +// CHECK-NEXT:    "type": {
>>> +// CHECK-NEXT:     "qualType": "const S *"
>>> +// CHECK-NEXT:    }
>>> +// CHECK-NEXT:   },
>>> +// CHECK-NEXT:   {
>>> +// CHECK-NEXT:    "id": "0x{{.*}}",
>>> +// CHECK-NEXT:    "kind": "CompoundStmt",
>>> +// CHECK-NEXT:    "range": {
>>> +// CHECK-NEXT:     "begin": {
>>> +// CHECK-NEXT:      "col": 30,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 53
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     "end": {
>>> +// CHECK-NEXT:      "col": 1,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 58
>>> +// CHECK-NEXT:     }
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "inner": [
>>> +// CHECK-NEXT:     {
>>> +// CHECK-NEXT:      "id": "0x{{.*}}",
>>> +// CHECK-NEXT:      "kind": "CXXConstCastExpr",
>>> +// CHECK-NEXT:      "range": {
>>> +// CHECK-NEXT:       "begin": {
>>> +// CHECK-NEXT:        "col": 3,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 54
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       "end": {
>>> +// CHECK-NEXT:        "col": 20,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 54
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "type": {
>>> +// CHECK-NEXT:       "qualType": "S *"
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "valueCategory": "rvalue",
>>> +// CHECK-NEXT:      "castKind": "NoOp",
>>> +// CHECK-NEXT:      "inner": [
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 19,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 54
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 19,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 54
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "const S *"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "castKind": "LValueToRValue",
>>> +// CHECK-NEXT:        "isPartOfExplicitCast": true,
>>> +// CHECK-NEXT:        "inner": [
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:          "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:          "range": {
>>> +// CHECK-NEXT:           "begin": {
>>> +// CHECK-NEXT:            "col": 19,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 54
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           "end": {
>>> +// CHECK-NEXT:            "col": 19,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 54
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "type": {
>>> +// CHECK-NEXT:           "qualType": "const S *"
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "valueCategory": "lvalue",
>>> +// CHECK-NEXT:          "referencedDecl": {
>>> +// CHECK-NEXT:           "id": "0x{{.*}}",
>>> +// CHECK-NEXT:           "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:           "name": "s",
>>> +// CHECK-NEXT:           "type": {
>>> +// CHECK-NEXT:            "qualType": "const S *"
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          }
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        ]
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      ]
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     {
>>> +// CHECK-NEXT:      "id": "0x{{.*}}",
>>> +// CHECK-NEXT:      "kind": "CXXStaticCastExpr",
>>> +// CHECK-NEXT:      "range": {
>>> +// CHECK-NEXT:       "begin": {
>>> +// CHECK-NEXT:        "col": 3,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 55
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       "end": {
>>> +// CHECK-NEXT:        "col": 27,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 55
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "type": {
>>> +// CHECK-NEXT:       "qualType": "const T *"
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "valueCategory": "rvalue",
>>> +// CHECK-NEXT:      "castKind": "BaseToDerived",
>>> +// CHECK-NEXT:      "path": [
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "name": "S"
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      ],
>>> +// CHECK-NEXT:      "inner": [
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 26,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 55
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 26,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 55
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "const S *"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "castKind": "LValueToRValue",
>>> +// CHECK-NEXT:        "isPartOfExplicitCast": true,
>>> +// CHECK-NEXT:        "inner": [
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:          "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:          "range": {
>>> +// CHECK-NEXT:           "begin": {
>>> +// CHECK-NEXT:            "col": 26,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 55
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           "end": {
>>> +// CHECK-NEXT:            "col": 26,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 55
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "type": {
>>> +// CHECK-NEXT:           "qualType": "const S *"
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "valueCategory": "lvalue",
>>> +// CHECK-NEXT:          "referencedDecl": {
>>> +// CHECK-NEXT:           "id": "0x{{.*}}",
>>> +// CHECK-NEXT:           "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:           "name": "s",
>>> +// CHECK-NEXT:           "type": {
>>> +// CHECK-NEXT:            "qualType": "const S *"
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          }
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        ]
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      ]
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     {
>>> +// CHECK-NEXT:      "id": "0x{{.*}}",
>>> +// CHECK-NEXT:      "kind": "CXXDynamicCastExpr",
>>> +// CHECK-NEXT:      "range": {
>>> +// CHECK-NEXT:       "begin": {
>>> +// CHECK-NEXT:        "col": 3,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 56
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       "end": {
>>> +// CHECK-NEXT:        "col": 28,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 56
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "type": {
>>> +// CHECK-NEXT:       "qualType": "const T *"
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "valueCategory": "rvalue",
>>> +// CHECK-NEXT:      "castKind": "Dynamic",
>>> +// CHECK-NEXT:      "inner": [
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 27,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 56
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 27,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 56
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "const S *"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "castKind": "LValueToRValue",
>>> +// CHECK-NEXT:        "isPartOfExplicitCast": true,
>>> +// CHECK-NEXT:        "inner": [
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:          "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:          "range": {
>>> +// CHECK-NEXT:           "begin": {
>>> +// CHECK-NEXT:            "col": 27,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 56
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           "end": {
>>> +// CHECK-NEXT:            "col": 27,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 56
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "type": {
>>> +// CHECK-NEXT:           "qualType": "const S *"
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "valueCategory": "lvalue",
>>> +// CHECK-NEXT:          "referencedDecl": {
>>> +// CHECK-NEXT:           "id": "0x{{.*}}",
>>> +// CHECK-NEXT:           "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:           "name": "s",
>>> +// CHECK-NEXT:           "type": {
>>> +// CHECK-NEXT:            "qualType": "const S *"
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          }
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        ]
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      ]
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     {
>>> +// CHECK-NEXT:      "id": "0x{{.*}}",
>>> +// CHECK-NEXT:      "kind": "CXXReinterpretCastExpr",
>>> +// CHECK-NEXT:      "range": {
>>> +// CHECK-NEXT:       "begin": {
>>> +// CHECK-NEXT:        "col": 3,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 57
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       "end": {
>>> +// CHECK-NEXT:        "col": 34,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 57
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "type": {
>>> +// CHECK-NEXT:       "qualType": "const int *"
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "valueCategory": "rvalue",
>>> +// CHECK-NEXT:      "castKind": "BitCast",
>>> +// CHECK-NEXT:      "inner": [
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 33,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 57
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 33,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 57
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "const S *"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "castKind": "LValueToRValue",
>>> +// CHECK-NEXT:        "isPartOfExplicitCast": true,
>>> +// CHECK-NEXT:        "inner": [
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:          "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:          "range": {
>>> +// CHECK-NEXT:           "begin": {
>>> +// CHECK-NEXT:            "col": 33,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 57
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           "end": {
>>> +// CHECK-NEXT:            "col": 33,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 57
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "type": {
>>> +// CHECK-NEXT:           "qualType": "const S *"
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "valueCategory": "lvalue",
>>> +// CHECK-NEXT:          "referencedDecl": {
>>> +// CHECK-NEXT:           "id": "0x{{.*}}",
>>> +// CHECK-NEXT:           "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:           "name": "s",
>>> +// CHECK-NEXT:           "type": {
>>> +// CHECK-NEXT:            "qualType": "const S *"
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          }
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        ]
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      ]
>>> +// CHECK-NEXT:     }
>>> +// CHECK-NEXT:    ]
>>> +// CHECK-NEXT:   }
>>> +// CHECK-NEXT:  ]
>>> +// CHECK-NEXT: }
>>> +
>>> +
>>> +// CHECK:  "kind": "FunctionTemplateDecl",
>>> +// CHECK-NEXT:  "loc": {
>>> +// CHECK-NEXT:   "col": 6,
>>> +// CHECK-NEXT:   "file": "{{.*}}",
>>> +// CHECK-NEXT:   "line": 61
>>> +// CHECK-NEXT:  },
>>> +// CHECK-NEXT:  "range": {
>>> +// CHECK-NEXT:   "begin": {
>>> +// CHECK-NEXT:    "col": 1,
>>> +// CHECK-NEXT:    "file": "{{.*}}",
>>> +// CHECK-NEXT:    "line": 60
>>> +// CHECK-NEXT:   },
>>> +// CHECK-NEXT:   "end": {
>>> +// CHECK-NEXT:    "col": 1,
>>> +// CHECK-NEXT:    "file": "{{.*}}",
>>> +// CHECK-NEXT:    "line": 75
>>> +// CHECK-NEXT:   }
>>> +// CHECK-NEXT:  },
>>> +// CHECK-NEXT:  "name": "TestUnaryExpressions",
>>> +// CHECK-NEXT:  "templateParams": [
>>> +// CHECK-NEXT:   {
>>> +// CHECK-NEXT:    "id": "0x{{.*}}",
>>> +// CHECK-NEXT:    "kind": "TemplateTypeParmDecl",
>>> +// CHECK-NEXT:    "loc": {
>>> +// CHECK-NEXT:     "col": 23,
>>> +// CHECK-NEXT:     "file": "{{.*}}",
>>> +// CHECK-NEXT:     "line": 60
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "range": {
>>> +// CHECK-NEXT:     "begin": {
>>> +// CHECK-NEXT:      "col": 11,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 60
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     "end": {
>>> +// CHECK-NEXT:      "col": 23,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 60
>>> +// CHECK-NEXT:     }
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "isReferenced": true,
>>> +// CHECK-NEXT:    "name": "Ts",
>>> +// CHECK-NEXT:    "tagUsed": "typename",
>>> +// CHECK-NEXT:    "depth": 0,
>>> +// CHECK-NEXT:    "index": 0,
>>> +// CHECK-NEXT:    "isParameterPack": true
>>> +// CHECK-NEXT:   }
>>> +// CHECK-NEXT:  ],
>>> +// CHECK-NEXT:  "inner": [
>>> +// CHECK-NEXT:   {
>>> +// CHECK-NEXT:    "id": "0x{{.*}}",
>>> +// CHECK-NEXT:    "kind": "FunctionDecl",
>>> +// CHECK-NEXT:    "loc": {
>>> +// CHECK-NEXT:     "col": 6,
>>> +// CHECK-NEXT:     "file": "{{.*}}",
>>> +// CHECK-NEXT:     "line": 61
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "range": {
>>> +// CHECK-NEXT:     "begin": {
>>> +// CHECK-NEXT:      "col": 1,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 61
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     "end": {
>>> +// CHECK-NEXT:      "col": 1,
>>> +// CHECK-NEXT:      "file": "{{.*}}",
>>> +// CHECK-NEXT:      "line": 75
>>> +// CHECK-NEXT:     }
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "name": "TestUnaryExpressions",
>>> +// CHECK-NEXT:    "type": {
>>> +// CHECK-NEXT:     "qualType": "void (int *)"
>>> +// CHECK-NEXT:    },
>>> +// CHECK-NEXT:    "inner": [
>>> +// CHECK-NEXT:     {
>>> +// CHECK-NEXT:      "id": "0x{{.*}}",
>>> +// CHECK-NEXT:      "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:      "loc": {
>>> +// CHECK-NEXT:       "col": 32,
>>> +// CHECK-NEXT:       "file": "{{.*}}",
>>> +// CHECK-NEXT:       "line": 61
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "range": {
>>> +// CHECK-NEXT:       "begin": {
>>> +// CHECK-NEXT:        "col": 27,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 61
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       "end": {
>>> +// CHECK-NEXT:        "col": 32,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 61
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "isReferenced": true,
>>> +// CHECK-NEXT:      "name": "p",
>>> +// CHECK-NEXT:      "type": {
>>> +// CHECK-NEXT:       "qualType": "int *"
>>> +// CHECK-NEXT:      }
>>> +// CHECK-NEXT:     },
>>> +// CHECK-NEXT:     {
>>> +// CHECK-NEXT:      "id": "0x{{.*}}",
>>> +// CHECK-NEXT:      "kind": "CompoundStmt",
>>> +// CHECK-NEXT:      "range": {
>>> +// CHECK-NEXT:       "begin": {
>>> +// CHECK-NEXT:        "col": 35,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 61
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       "end": {
>>> +// CHECK-NEXT:        "col": 1,
>>> +// CHECK-NEXT:        "file": "{{.*}}",
>>> +// CHECK-NEXT:        "line": 75
>>> +// CHECK-NEXT:       }
>>> +// CHECK-NEXT:      },
>>> +// CHECK-NEXT:      "inner": [
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "SizeOfPackExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 3,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 62
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 15,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 62
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "unsigned long"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue"
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "CXXNoexceptExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 3,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 63
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 17,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 63
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "bool"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "inner": [
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:          "kind": "BinaryOperator",
>>> +// CHECK-NEXT:          "range": {
>>> +// CHECK-NEXT:           "begin": {
>>> +// CHECK-NEXT:            "col": 12,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 63
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           "end": {
>>> +// CHECK-NEXT:            "col": 16,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 63
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "type": {
>>> +// CHECK-NEXT:           "qualType": "long"
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "valueCategory": "rvalue",
>>> +// CHECK-NEXT:          "opcode": "-",
>>> +// CHECK-NEXT:          "inner": [
>>> +// CHECK-NEXT:           {
>>> +// CHECK-NEXT:            "id": "0x{{.*}}",
>>> +// CHECK-NEXT:            "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:            "range": {
>>> +// CHECK-NEXT:             "begin": {
>>> +// CHECK-NEXT:              "col": 12,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 63
>>> +// CHECK-NEXT:             },
>>> +// CHECK-NEXT:             "end": {
>>> +// CHECK-NEXT:              "col": 12,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 63
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "type": {
>>> +// CHECK-NEXT:             "qualType": "int *"
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "valueCategory": "rvalue",
>>> +// CHECK-NEXT:            "castKind": "LValueToRValue",
>>> +// CHECK-NEXT:            "inner": [
>>> +// CHECK-NEXT:             {
>>> +// CHECK-NEXT:              "id": "0x{{.*}}",
>>> +// CHECK-NEXT:              "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:              "range": {
>>> +// CHECK-NEXT:               "begin": {
>>> +// CHECK-NEXT:                "col": 12,
>>> +// CHECK-NEXT:                "file": "{{.*}}",
>>> +// CHECK-NEXT:                "line": 63
>>> +// CHECK-NEXT:               },
>>> +// CHECK-NEXT:               "end": {
>>> +// CHECK-NEXT:                "col": 12,
>>> +// CHECK-NEXT:                "file": "{{.*}}",
>>> +// CHECK-NEXT:                "line": 63
>>> +// CHECK-NEXT:               }
>>> +// CHECK-NEXT:              },
>>> +// CHECK-NEXT:              "type": {
>>> +// CHECK-NEXT:               "qualType": "int *"
>>> +// CHECK-NEXT:              },
>>> +// CHECK-NEXT:              "valueCategory": "lvalue",
>>> +// CHECK-NEXT:              "referencedDecl": {
>>> +// CHECK-NEXT:               "id": "0x{{.*}}",
>>> +// CHECK-NEXT:               "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:               "name": "p",
>>> +// CHECK-NEXT:               "type": {
>>> +// CHECK-NEXT:                "qualType": "int *"
>>> +// CHECK-NEXT:               }
>>> +// CHECK-NEXT:              }
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            ]
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           {
>>> +// CHECK-NEXT:            "id": "0x{{.*}}",
>>> +// CHECK-NEXT:            "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:            "range": {
>>> +// CHECK-NEXT:             "begin": {
>>> +// CHECK-NEXT:              "col": 16,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 63
>>> +// CHECK-NEXT:             },
>>> +// CHECK-NEXT:             "end": {
>>> +// CHECK-NEXT:              "col": 16,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 63
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "type": {
>>> +// CHECK-NEXT:             "qualType": "int *"
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "valueCategory": "rvalue",
>>> +// CHECK-NEXT:            "castKind": "LValueToRValue",
>>> +// CHECK-NEXT:            "inner": [
>>> +// CHECK-NEXT:             {
>>> +// CHECK-NEXT:              "id": "0x{{.*}}",
>>> +// CHECK-NEXT:              "kind": "DeclRefExpr",
>>> +// CHECK-NEXT:              "range": {
>>> +// CHECK-NEXT:               "begin": {
>>> +// CHECK-NEXT:                "col": 16,
>>> +// CHECK-NEXT:                "file": "{{.*}}",
>>> +// CHECK-NEXT:                "line": 63
>>> +// CHECK-NEXT:               },
>>> +// CHECK-NEXT:               "end": {
>>> +// CHECK-NEXT:                "col": 16,
>>> +// CHECK-NEXT:                "file": "{{.*}}",
>>> +// CHECK-NEXT:                "line": 63
>>> +// CHECK-NEXT:               }
>>> +// CHECK-NEXT:              },
>>> +// CHECK-NEXT:              "type": {
>>> +// CHECK-NEXT:               "qualType": "int *"
>>> +// CHECK-NEXT:              },
>>> +// CHECK-NEXT:              "valueCategory": "lvalue",
>>> +// CHECK-NEXT:              "referencedDecl": {
>>> +// CHECK-NEXT:               "id": "0x{{.*}}",
>>> +// CHECK-NEXT:               "kind": "ParmVarDecl",
>>> +// CHECK-NEXT:               "name": "p",
>>> +// CHECK-NEXT:               "type": {
>>> +// CHECK-NEXT:                "qualType": "int *"
>>> +// CHECK-NEXT:               }
>>> +// CHECK-NEXT:              }
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            ]
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          ]
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        ]
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "CXXNewExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 3,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 65
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 9,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 65
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "int *"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "isGlobal": true,
>>> +// CHECK-NEXT:        "operatorNewDecl": {
>>> +// CHECK-NEXT:         "id": "0x{{.*}}",
>>> +// CHECK-NEXT:         "kind": "FunctionDecl",
>>> +// CHECK-NEXT:         "name": "operator new",
>>> +// CHECK-NEXT:         "type": {
>>> +// CHECK-NEXT:          "qualType": "void *(unsigned long)"
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        }
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "CXXNewExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 3,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 66
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 11,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 66
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "int *"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "operatorNewDecl": {
>>> +// CHECK-NEXT:         "id": "0x{{.*}}",
>>> +// CHECK-NEXT:         "kind": "FunctionDecl",
>>> +// CHECK-NEXT:         "name": "operator new",
>>> +// CHECK-NEXT:         "type": {
>>> +// CHECK-NEXT:          "qualType": "void *(unsigned long)"
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        }
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "CXXNewExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 3,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 67
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 13,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 67
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "int *"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "initStyle": "list",
>>> +// CHECK-NEXT:        "operatorNewDecl": {
>>> +// CHECK-NEXT:         "id": "0x{{.*}}",
>>> +// CHECK-NEXT:         "kind": "FunctionDecl",
>>> +// CHECK-NEXT:         "name": "operator new",
>>> +// CHECK-NEXT:         "type": {
>>> +// CHECK-NEXT:          "qualType": "void *(unsigned long)"
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "inner": [
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:          "kind": "InitListExpr",
>>> +// CHECK-NEXT:          "range": {
>>> +// CHECK-NEXT:           "begin": {
>>> +// CHECK-NEXT:            "col": 10,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 67
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           "end": {
>>> +// CHECK-NEXT:            "col": 13,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 67
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "type": {
>>> +// CHECK-NEXT:           "qualType": "int"
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "valueCategory": "rvalue",
>>> +// CHECK-NEXT:          "inner": [
>>> +// CHECK-NEXT:           {
>>> +// CHECK-NEXT:            "id": "0x{{.*}}",
>>> +// CHECK-NEXT:            "kind": "IntegerLiteral",
>>> +// CHECK-NEXT:            "range": {
>>> +// CHECK-NEXT:             "begin": {
>>> +// CHECK-NEXT:              "col": 11,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 67
>>> +// CHECK-NEXT:             },
>>> +// CHECK-NEXT:             "end": {
>>> +// CHECK-NEXT:              "col": 11,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 67
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "type": {
>>> +// CHECK-NEXT:             "qualType": "int"
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "valueCategory": "rvalue",
>>> +// CHECK-NEXT:            "value": "12"
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          ]
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        ]
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "CXXNewExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 3,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 68
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 12,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 68
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "int *"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "isArray": true,
>>> +// CHECK-NEXT:        "operatorNewDecl": {
>>> +// CHECK-NEXT:         "id": "0x{{.*}}",
>>> +// CHECK-NEXT:         "kind": "FunctionDecl",
>>> +// CHECK-NEXT:         "name": "operator new[]",
>>> +// CHECK-NEXT:         "type": {
>>> +// CHECK-NEXT:          "qualType": "void *(unsigned long)"
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "inner": [
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:          "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:          "range": {
>>> +// CHECK-NEXT:           "begin": {
>>> +// CHECK-NEXT:            "col": 11,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 68
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           "end": {
>>> +// CHECK-NEXT:            "col": 11,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 68
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "type": {
>>> +// CHECK-NEXT:           "qualType": "unsigned long"
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "valueCategory": "rvalue",
>>> +// CHECK-NEXT:          "castKind": "IntegralCast",
>>> +// CHECK-NEXT:          "inner": [
>>> +// CHECK-NEXT:           {
>>> +// CHECK-NEXT:            "id": "0x{{.*}}",
>>> +// CHECK-NEXT:            "kind": "IntegerLiteral",
>>> +// CHECK-NEXT:            "range": {
>>> +// CHECK-NEXT:             "begin": {
>>> +// CHECK-NEXT:              "col": 11,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 68
>>> +// CHECK-NEXT:             },
>>> +// CHECK-NEXT:             "end": {
>>> +// CHECK-NEXT:              "col": 11,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 68
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "type": {
>>> +// CHECK-NEXT:             "qualType": "int"
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "valueCategory": "rvalue",
>>> +// CHECK-NEXT:            "value": "2"
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          ]
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        ]
>>> +// CHECK-NEXT:       },
>>> +// CHECK-NEXT:       {
>>> +// CHECK-NEXT:        "id": "0x{{.*}}",
>>> +// CHECK-NEXT:        "kind": "CXXNewExpr",
>>> +// CHECK-NEXT:        "range": {
>>> +// CHECK-NEXT:         "begin": {
>>> +// CHECK-NEXT:          "col": 3,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 69
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         "end": {
>>> +// CHECK-NEXT:          "col": 18,
>>> +// CHECK-NEXT:          "file": "{{.*}}",
>>> +// CHECK-NEXT:          "line": 69
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "type": {
>>> +// CHECK-NEXT:         "qualType": "int *"
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "valueCategory": "rvalue",
>>> +// CHECK-NEXT:        "isArray": true,
>>> +// CHECK-NEXT:        "initStyle": "list",
>>> +// CHECK-NEXT:        "operatorNewDecl": {
>>> +// CHECK-NEXT:         "id": "0x{{.*}}",
>>> +// CHECK-NEXT:         "kind": "FunctionDecl",
>>> +// CHECK-NEXT:         "name": "operator new[]",
>>> +// CHECK-NEXT:         "type": {
>>> +// CHECK-NEXT:          "qualType": "void *(unsigned long)"
>>> +// CHECK-NEXT:         }
>>> +// CHECK-NEXT:        },
>>> +// CHECK-NEXT:        "inner": [
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:          "kind": "ImplicitCastExpr",
>>> +// CHECK-NEXT:          "range": {
>>> +// CHECK-NEXT:           "begin": {
>>> +// CHECK-NEXT:            "col": 11,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 69
>>> +// CHECK-NEXT:           },
>>> +// CHECK-NEXT:           "end": {
>>> +// CHECK-NEXT:            "col": 11,
>>> +// CHECK-NEXT:            "file": "{{.*}}",
>>> +// CHECK-NEXT:            "line": 69
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "type": {
>>> +// CHECK-NEXT:           "qualType": "unsigned long"
>>> +// CHECK-NEXT:          },
>>> +// CHECK-NEXT:          "valueCategory": "rvalue",
>>> +// CHECK-NEXT:          "castKind": "IntegralCast",
>>> +// CHECK-NEXT:          "inner": [
>>> +// CHECK-NEXT:           {
>>> +// CHECK-NEXT:            "id": "0x{{.*}}",
>>> +// CHECK-NEXT:            "kind": "IntegerLiteral",
>>> +// CHECK-NEXT:            "range": {
>>> +// CHECK-NEXT:             "begin": {
>>> +// CHECK-NEXT:              "col": 11,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 69
>>> +// CHECK-NEXT:             },
>>> +// CHECK-NEXT:             "end": {
>>> +// CHECK-NEXT:              "col": 11,
>>> +// CHECK-NEXT:              "file": "{{.*}}",
>>> +// CHECK-NEXT:              "line": 69
>>> +// CHECK-NEXT:             }
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "type": {
>>> +// CHECK-NEXT:             "qualType": "int"
>>> +// CHECK-NEXT:            },
>>> +// CHECK-NEXT:            "valueCategory": "rvalue",
>>> +// CHECK-NEXT:            "value": "2"
>>> +// CHECK-NEXT:           }
>>> +// CHECK-NEXT:          ]
>>> +// CHECK-NEXT:         },
>>> +// CHECK-NEXT:         {
>>> +// CHECK-NEXT:          "id": "0x{{.*}}",
>>> +// CHECK-NEXT:
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190601/2770a4af/attachment-0001.html>


More information about the cfe-commits mailing list