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