r361764 - Add test cases for dumping AST expression nodes to JSON; NFC.
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Sat Jun 1 00:39:11 PDT 2019
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?
~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: "kind": "InitListExpr",
>> +// CHECK-NEXT: "range": {
>> +// CHECK-NEXT: "begin": {
>> +// CHECK-NEXT: "col": 13,
>> +// CHECK-NEXT: "file": "{{.*}}",
>> +// CHECK-NEXT: "line": 69
>> +// CHECK-NEXT: },
>> +// CHECK-NEXT: "end": {
>> +// CHECK-NEXT: "col": 18,
>> +// CHECK-NEXT: "file": "{{.*}}",
>> +// CHECK-NEXT: "line": 69
>> +// CHE
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190601/11b23ed3/attachment-0001.html>
More information about the cfe-commits
mailing list