]> granicus.if.org Git - clang/commitdiff
Dump floating-point values as strings when dumping to JSON.
authorAaron Ballman <aaron@aaronballman.com>
Fri, 12 Jul 2019 13:57:41 +0000 (13:57 +0000)
committerAaron Ballman <aaron@aaronballman.com>
Fri, 12 Jul 2019 13:57:41 +0000 (13:57 +0000)
This fixes a bug where we would have an invalid JSON attribute (e.g., "value": inf). It also increases the precision of the values because they're not represented as approximate doubles with the host architecture's floating-point model.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@365900 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/JSONNodeDumper.cpp
test/AST/ast-dump-expr-json.c
test/AST/ast-dump-temporaries-json.cpp

index 2bb72f9fe9bd0c3e38ca2b6f15a2ce1ec895f5a9..60f3c0f8601f17e87901d06fc61d4b8e03f35fc0 100644 (file)
@@ -1349,7 +1349,9 @@ void JSONNodeDumper::VisitFixedPointLiteral(const FixedPointLiteral *FPL) {
   JOS.attribute("value", FPL->getValueAsString(/*Radix=*/10));
 }
 void JSONNodeDumper::VisitFloatingLiteral(const FloatingLiteral *FL) {
-  JOS.attribute("value", FL->getValueAsApproximateDouble());
+  llvm::SmallVector<char, 16> Buffer;
+  FL->getValue().toString(Buffer);
+  JOS.attribute("value", Buffer);
 }
 void JSONNodeDumper::VisitStringLiteral(const StringLiteral *SL) {
   std::string Buffer;
index 9848c23d5d18e06f62e55149c3dc04920f80fd81..b988c52e819c1e1894d60857efeae15f79e23ddb 100644 (file)
-// RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -std=gnu11 -ast-dump=json %s | FileCheck %s
-
-void Comma(void) {
-  1, 2, 3;
-}
-
-void Assignment(int a) {
-  a = 12;
-  a += a;
-}
-
-void Conditionals(int a) {
-  a ? 0 : 1;
-  a ?: 0;
-}
-
-void BinaryOperators(int a, int b) {
-  // Logical operators
-  a || b;
-  a && b;
-
-  // Bitwise operators
-  a | b;
-  a ^ b;
-  a & b;
-
-  // Equality operators
-  a == b;
-  a != b;
-
-  // Relational operators
-  a < b;
-  a > b;
-  a <= b;
-  a >= b;
-
-  // Bit shifting operators
-  a << b;
-  a >> b;
-
-  // Additive operators
-  a + b;
-  a - b;
-
-  // Multiplicative operators
-  a * b;
-  a / b;
-  a % b;
-}
-
-void UnaryOperators(int a, int *b) {
-  // Cast operators
-  (float)a;
-
-  // ++, --, and ~ are covered elsewhere.
-
-  -a;
-  +a;
-  &a;
-  *b;
-  !a;
-
-  sizeof a;
-  sizeof(int);
-  _Alignof(int);
-}
-
-struct S {
-  int a;
-};
-
-void PostfixOperators(int *a, struct S b, struct S *c) {
-  a[0];
-  UnaryOperators(*a, a);
-
-  b.a;
-  c->a;
-
-  // Postfix ++ and -- are covered elsewhere.
-
-  (int [4]){1, 2, 3, 4, };
-  (struct S){1};
-}
-
-enum E { One };
-
-void PrimaryExpressions(int a) {
-  a;
-  'a';
-  L'a';
-  "a";
-  L"a";
-  u8"a";
-  U"a";
-  u"a";
-
-  1;
-  1u;
-  1ll;
-  1.0;
-  1.0f;
-  1.0l;
-  One;
-
-  (a);
-}
-
-// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
-// using --filters=FunctionDecl
-
-
-// CHECK:  "kind": "FunctionDecl",
-// CHECK-NEXT:  "loc": {
-// CHECK-NEXT:   "file": "{{.*}}",
-// CHECK-NEXT:   "line": 3,
-// CHECK-NEXT:   "col": 6,
-// CHECK-NEXT:   "tokLen": 5
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "range": {
-// CHECK-NEXT:   "begin": {
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 4
-// CHECK-NEXT:   },
-// CHECK-NEXT:   "end": {
-// CHECK-NEXT:    "line": 5,
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 1
-// CHECK-NEXT:   }
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "name": "Comma",
-// CHECK-NEXT:  "type": {
-// CHECK-NEXT:   "qualType": "void (void)"
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "inner": [
-// CHECK-NEXT:   {
-// CHECK-NEXT:    "id": "0x{{.*}}",
-// CHECK-NEXT:    "kind": "CompoundStmt",
-// CHECK-NEXT:    "range": {
-// CHECK-NEXT:     "begin": {
-// CHECK-NEXT:      "line": 3,
-// CHECK-NEXT:      "col": 18,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "line": 5,
-// CHECK-NEXT:      "col": 1,
-// CHECK-NEXT:      "tokLen": 1
-// 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:        "line": 4,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 9,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "opcode": ",",
-// 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:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 6,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "int"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "rvalue",
-// CHECK-NEXT:        "opcode": ",",
-// CHECK-NEXT:        "inner": [
-// CHECK-NEXT:         {
-// CHECK-NEXT:          "id": "0x{{.*}}",
-// CHECK-NEXT:          "kind": "IntegerLiteral",
-// CHECK-NEXT:          "range": {
-// CHECK-NEXT:           "begin": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           }
-// CHECK-NEXT:          },
-// CHECK-NEXT:          "type": {
-// CHECK-NEXT:           "qualType": "int"
-// CHECK-NEXT:          },
-// CHECK-NEXT:          "valueCategory": "rvalue",
-// CHECK-NEXT:          "value": "1"
-// CHECK-NEXT:         },
-// CHECK-NEXT:         {
-// CHECK-NEXT:          "id": "0x{{.*}}",
-// CHECK-NEXT:          "kind": "IntegerLiteral",
-// CHECK-NEXT:          "range": {
-// CHECK-NEXT:           "begin": {
-// CHECK-NEXT:            "col": 6,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 6,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "IntegerLiteral",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 9,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 9,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "int"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "rvalue",
-// CHECK-NEXT:        "value": "3"
-// CHECK-NEXT:       }
-// CHECK-NEXT:      ]
-// CHECK-NEXT:     }
-// CHECK-NEXT:    ]
-// CHECK-NEXT:   }
-// CHECK-NEXT:  ]
-// CHECK-NEXT: }
-
-
-// CHECK:  "kind": "FunctionDecl",
-// CHECK-NEXT:  "loc": {
-// CHECK-NEXT:   "line": 7,
-// CHECK-NEXT:   "col": 6,
-// CHECK-NEXT:   "tokLen": 10
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "range": {
-// CHECK-NEXT:   "begin": {
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 4
-// CHECK-NEXT:   },
-// CHECK-NEXT:   "end": {
-// CHECK-NEXT:    "line": 10,
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 1
-// CHECK-NEXT:   }
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "name": "Assignment",
-// 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:     "line": 7,
-// CHECK-NEXT:     "col": 21,
-// CHECK-NEXT:     "tokLen": 1
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "range": {
-// CHECK-NEXT:     "begin": {
-// CHECK-NEXT:      "col": 17,
-// CHECK-NEXT:      "tokLen": 3
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "col": 21,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     }
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "isUsed": true,
-// CHECK-NEXT:    "name": "a",
-// 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": 24,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "line": 10,
-// CHECK-NEXT:      "col": 1,
-// CHECK-NEXT:      "tokLen": 1
-// 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:        "line": 8,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 7,
-// CHECK-NEXT:        "tokLen": 2
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": "a",
-// CHECK-NEXT:         "type": {
-// CHECK-NEXT:          "qualType": "int"
-// 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": 7,
-// CHECK-NEXT:          "tokLen": 2
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 7,
-// CHECK-NEXT:          "tokLen": 2
-// 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": "CompoundAssignOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 9,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 8,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "opcode": "+=",
-// CHECK-NEXT:      "computeLHSType": {
-// CHECK-NEXT:       "qualType": "int"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "computeResultType": {
-// CHECK-NEXT:       "qualType": "int"
-// CHECK-NEXT:      },
-// 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:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": "a",
-// CHECK-NEXT:         "type": {
-// CHECK-NEXT:          "qualType": "int"
-// 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": 8,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 8,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 8,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 8,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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: }
-
-
-// CHECK:  "kind": "FunctionDecl",
-// CHECK-NEXT:  "loc": {
-// CHECK-NEXT:   "line": 12,
-// CHECK-NEXT:   "col": 6,
-// CHECK-NEXT:   "tokLen": 12
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "range": {
-// CHECK-NEXT:   "begin": {
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 4
-// CHECK-NEXT:   },
-// CHECK-NEXT:   "end": {
-// CHECK-NEXT:    "line": 15,
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 1
-// CHECK-NEXT:   }
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "name": "Conditionals",
-// 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:     "line": 12,
-// CHECK-NEXT:     "col": 23,
-// CHECK-NEXT:     "tokLen": 1
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "range": {
-// CHECK-NEXT:     "begin": {
-// CHECK-NEXT:      "col": 19,
-// CHECK-NEXT:      "tokLen": 3
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "col": 23,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     }
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "isUsed": true,
-// CHECK-NEXT:    "name": "a",
-// 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": 26,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "line": 15,
-// CHECK-NEXT:      "col": 1,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     }
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "inner": [
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "ConditionalOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 13,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 11,
-// CHECK-NEXT:        "tokLen": 1
-// 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": "ImplicitCastExpr",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": "IntegerLiteral",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 7,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 7,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "int"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "rvalue",
-// CHECK-NEXT:        "value": "0"
-// CHECK-NEXT:       },
-// CHECK-NEXT:       {
-// CHECK-NEXT:        "id": "0x{{.*}}",
-// CHECK-NEXT:        "kind": "IntegerLiteral",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 11,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 11,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "int"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "rvalue",
-// CHECK-NEXT:        "value": "1"
-// CHECK-NEXT:       }
-// CHECK-NEXT:      ]
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryConditionalOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 14,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 8,
-// CHECK-NEXT:        "tokLen": 1
-// 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": "ImplicitCastExpr",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": "OpaqueValueExpr",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": "ImplicitCastExpr",
-// CHECK-NEXT:          "range": {
-// CHECK-NEXT:           "begin": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             },
-// CHECK-NEXT:             "end": {
-// CHECK-NEXT:              "col": 3,
-// CHECK-NEXT:              "tokLen": 1
-// 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": "a",
-// 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:        "id": "0x{{.*}}",
-// CHECK-NEXT:        "kind": "OpaqueValueExpr",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": "ImplicitCastExpr",
-// CHECK-NEXT:          "range": {
-// CHECK-NEXT:           "begin": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             },
-// CHECK-NEXT:             "end": {
-// CHECK-NEXT:              "col": 3,
-// CHECK-NEXT:              "tokLen": 1
-// 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": "a",
-// 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:        "id": "0x{{.*}}",
-// CHECK-NEXT:        "kind": "IntegerLiteral",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 8,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 8,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "int"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "rvalue",
-// CHECK-NEXT:        "value": "0"
-// CHECK-NEXT:       }
-// CHECK-NEXT:      ]
-// CHECK-NEXT:     }
-// CHECK-NEXT:    ]
-// CHECK-NEXT:   }
-// CHECK-NEXT:  ]
-// CHECK-NEXT: }
-
-
-// CHECK:  "kind": "FunctionDecl",
-// CHECK-NEXT:  "loc": {
-// CHECK-NEXT:   "line": 17,
-// CHECK-NEXT:   "col": 6,
-// CHECK-NEXT:   "tokLen": 15
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "range": {
-// CHECK-NEXT:   "begin": {
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 4
-// CHECK-NEXT:   },
-// CHECK-NEXT:   "end": {
-// CHECK-NEXT:    "line": 49,
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 1
-// CHECK-NEXT:   }
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "name": "BinaryOperators",
-// CHECK-NEXT:  "type": {
-// CHECK-NEXT:   "qualType": "void (int, int)"
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "inner": [
-// CHECK-NEXT:   {
-// CHECK-NEXT:    "id": "0x{{.*}}",
-// CHECK-NEXT:    "kind": "ParmVarDecl",
-// CHECK-NEXT:    "loc": {
-// CHECK-NEXT:     "line": 17,
-// CHECK-NEXT:     "col": 26,
-// CHECK-NEXT:     "tokLen": 1
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "range": {
-// CHECK-NEXT:     "begin": {
-// CHECK-NEXT:      "col": 22,
-// CHECK-NEXT:      "tokLen": 3
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "col": 26,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     }
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "isUsed": true,
-// CHECK-NEXT:    "name": "a",
-// CHECK-NEXT:    "type": {
-// CHECK-NEXT:     "qualType": "int"
-// CHECK-NEXT:    }
-// CHECK-NEXT:   },
-// CHECK-NEXT:   {
-// CHECK-NEXT:    "id": "0x{{.*}}",
-// CHECK-NEXT:    "kind": "ParmVarDecl",
-// CHECK-NEXT:    "loc": {
-// CHECK-NEXT:     "col": 33,
-// CHECK-NEXT:     "tokLen": 1
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "range": {
-// CHECK-NEXT:     "begin": {
-// CHECK-NEXT:      "col": 29,
-// CHECK-NEXT:      "tokLen": 3
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "col": 33,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     }
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "isUsed": true,
-// CHECK-NEXT:    "name": "b",
-// 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": 36,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "line": 49,
-// CHECK-NEXT:      "col": 1,
-// CHECK-NEXT:      "tokLen": 1
-// 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:        "line": 19,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 8,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 8,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 8,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 8,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 8,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 20,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 8,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 8,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 8,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 8,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 8,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 23,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 7,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 7,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 7,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 7,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 7,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 24,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 7,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 7,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 7,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 7,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 7,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 25,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 7,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 7,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 7,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 7,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 7,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 28,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 8,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 8,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 8,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 8,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 8,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 29,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 8,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 8,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 8,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 8,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 8,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 32,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 7,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 7,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 7,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 7,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 7,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 33,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 7,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 7,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 7,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 7,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 7,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 34,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 8,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 8,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 8,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 8,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 8,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 35,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 8,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 8,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 8,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 8,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 8,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 38,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 8,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 8,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 8,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 8,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 8,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 39,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 8,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 8,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 8,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 8,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 8,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 42,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 7,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 7,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 7,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 7,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 7,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 43,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 7,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 7,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 7,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 7,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 7,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 46,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 7,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 7,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 7,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 7,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 7,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 47,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 7,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 7,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 7,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 7,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 7,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "BinaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 48,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 7,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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": 7,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 7,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 7,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 7,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "b",
-// 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: }
-
-
-// CHECK:  "kind": "FunctionDecl",
-// CHECK-NEXT:  "loc": {
-// CHECK-NEXT:   "line": 51,
-// CHECK-NEXT:   "col": 6,
-// CHECK-NEXT:   "tokLen": 14
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "range": {
-// CHECK-NEXT:   "begin": {
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 4
-// CHECK-NEXT:   },
-// CHECK-NEXT:   "end": {
-// CHECK-NEXT:    "line": 66,
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 1
-// CHECK-NEXT:   }
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "isUsed": true,
-// CHECK-NEXT:  "name": "UnaryOperators",
-// CHECK-NEXT:  "type": {
-// CHECK-NEXT:   "qualType": "void (int, int *)"
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "inner": [
-// CHECK-NEXT:   {
-// CHECK-NEXT:    "id": "0x{{.*}}",
-// CHECK-NEXT:    "kind": "ParmVarDecl",
-// CHECK-NEXT:    "loc": {
-// CHECK-NEXT:     "line": 51,
-// CHECK-NEXT:     "col": 25,
-// CHECK-NEXT:     "tokLen": 1
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "range": {
-// CHECK-NEXT:     "begin": {
-// CHECK-NEXT:      "col": 21,
-// CHECK-NEXT:      "tokLen": 3
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "col": 25,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     }
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "isUsed": true,
-// CHECK-NEXT:    "name": "a",
-// CHECK-NEXT:    "type": {
-// CHECK-NEXT:     "qualType": "int"
-// CHECK-NEXT:    }
-// CHECK-NEXT:   },
-// CHECK-NEXT:   {
-// CHECK-NEXT:    "id": "0x{{.*}}",
-// CHECK-NEXT:    "kind": "ParmVarDecl",
-// CHECK-NEXT:    "loc": {
-// CHECK-NEXT:     "col": 33,
-// CHECK-NEXT:     "tokLen": 1
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "range": {
-// CHECK-NEXT:     "begin": {
-// CHECK-NEXT:      "col": 28,
-// CHECK-NEXT:      "tokLen": 3
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "col": 33,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     }
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "isUsed": true,
-// CHECK-NEXT:    "name": "b",
-// 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": 36,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "line": 66,
-// CHECK-NEXT:      "col": 1,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     }
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "inner": [
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "CStyleCastExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 53,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 10,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "float"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "castKind": "IntegralToFloating",
-// CHECK-NEXT:      "inner": [
-// CHECK-NEXT:       {
-// CHECK-NEXT:        "id": "0x{{.*}}",
-// CHECK-NEXT:        "kind": "ImplicitCastExpr",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 10,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 10,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "int"
-// 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": 10,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 10,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "UnaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 57,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 4,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "isPostfix": false,
-// 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:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 4,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 4,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 4,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "UnaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 58,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 4,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "isPostfix": false,
-// CHECK-NEXT:      "opcode": "+",
-// CHECK-NEXT:      "canOverflow": false,
-// 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:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 4,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 4,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 4,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "UnaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 59,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 4,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int *"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "isPostfix": false,
-// CHECK-NEXT:      "opcode": "&",
-// CHECK-NEXT:      "canOverflow": false,
-// 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:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 4,
-// CHECK-NEXT:          "tokLen": 1
-// 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": "a",
-// 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:        "line": 60,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 4,
-// CHECK-NEXT:        "tokLen": 1
-// 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": "UnaryOperator",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 4,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "int"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "lvalue",
-// CHECK-NEXT:        "isPostfix": false,
-// CHECK-NEXT:        "opcode": "*",
-// CHECK-NEXT:        "canOverflow": false,
-// 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:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 4,
-// CHECK-NEXT:            "tokLen": 1
-// 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": 4,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             },
-// CHECK-NEXT:             "end": {
-// CHECK-NEXT:              "col": 4,
-// CHECK-NEXT:              "tokLen": 1
-// 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": "b",
-// 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": "UnaryOperator",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 61,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 4,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "isPostfix": false,
-// CHECK-NEXT:      "opcode": "!",
-// CHECK-NEXT:      "canOverflow": false,
-// 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:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 4,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 4,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 4,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "UnaryExprOrTypeTraitExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 63,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 6
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 10,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "unsigned long"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "name": "sizeof",
-// 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:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 10,
-// CHECK-NEXT:          "tokLen": 1
-// 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": "a",
-// CHECK-NEXT:         "type": {
-// CHECK-NEXT:          "qualType": "int"
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "nonOdrUseReason": "unevaluated"
-// CHECK-NEXT:       }
-// CHECK-NEXT:      ]
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "UnaryExprOrTypeTraitExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 64,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 6
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 13,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "unsigned long"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "name": "sizeof",
-// CHECK-NEXT:      "argType": {
-// CHECK-NEXT:       "qualType": "int"
-// CHECK-NEXT:      }
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "UnaryExprOrTypeTraitExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 65,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 8
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 15,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "unsigned long"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "name": "alignof",
-// CHECK-NEXT:      "argType": {
-// CHECK-NEXT:       "qualType": "int"
-// CHECK-NEXT:      }
-// CHECK-NEXT:     }
-// CHECK-NEXT:    ]
-// CHECK-NEXT:   }
-// CHECK-NEXT:  ]
-// CHECK-NEXT: }
-
-
-// CHECK:  "kind": "FunctionDecl",
-// CHECK-NEXT:  "loc": {
-// CHECK-NEXT:   "line": 72,
-// CHECK-NEXT:   "col": 6,
-// CHECK-NEXT:   "tokLen": 16
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "range": {
-// CHECK-NEXT:   "begin": {
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 4
-// CHECK-NEXT:   },
-// CHECK-NEXT:   "end": {
-// CHECK-NEXT:    "line": 83,
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 1
-// CHECK-NEXT:   }
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "name": "PostfixOperators",
-// CHECK-NEXT:  "type": {
-// CHECK-NEXT:   "qualType": "void (int *, struct S, struct S *)"
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "inner": [
-// CHECK-NEXT:   {
-// CHECK-NEXT:    "id": "0x{{.*}}",
-// CHECK-NEXT:    "kind": "ParmVarDecl",
-// CHECK-NEXT:    "loc": {
-// CHECK-NEXT:     "line": 72,
-// CHECK-NEXT:     "col": 28,
-// CHECK-NEXT:     "tokLen": 1
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "range": {
-// CHECK-NEXT:     "begin": {
-// CHECK-NEXT:      "col": 23,
-// CHECK-NEXT:      "tokLen": 3
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "col": 28,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     }
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "isUsed": true,
-// CHECK-NEXT:    "name": "a",
-// CHECK-NEXT:    "type": {
-// CHECK-NEXT:     "qualType": "int *"
-// CHECK-NEXT:    }
-// CHECK-NEXT:   },
-// CHECK-NEXT:   {
-// CHECK-NEXT:    "id": "0x{{.*}}",
-// CHECK-NEXT:    "kind": "ParmVarDecl",
-// CHECK-NEXT:    "loc": {
-// CHECK-NEXT:     "col": 40,
-// CHECK-NEXT:     "tokLen": 1
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "range": {
-// CHECK-NEXT:     "begin": {
-// CHECK-NEXT:      "col": 31,
-// CHECK-NEXT:      "tokLen": 6
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "col": 40,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     }
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "isUsed": true,
-// CHECK-NEXT:    "name": "b",
-// CHECK-NEXT:    "type": {
-// CHECK-NEXT:     "desugaredQualType": "struct S",
-// CHECK-NEXT:     "qualType": "struct S"
-// CHECK-NEXT:    }
-// CHECK-NEXT:   },
-// CHECK-NEXT:   {
-// CHECK-NEXT:    "id": "0x{{.*}}",
-// CHECK-NEXT:    "kind": "ParmVarDecl",
-// CHECK-NEXT:    "loc": {
-// CHECK-NEXT:     "col": 53,
-// CHECK-NEXT:     "tokLen": 1
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "range": {
-// CHECK-NEXT:     "begin": {
-// CHECK-NEXT:      "col": 43,
-// CHECK-NEXT:      "tokLen": 6
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "col": 53,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     }
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "isUsed": true,
-// CHECK-NEXT:    "name": "c",
-// CHECK-NEXT:    "type": {
-// CHECK-NEXT:     "qualType": "struct S *"
-// CHECK-NEXT:    }
-// CHECK-NEXT:   },
-// CHECK-NEXT:   {
-// CHECK-NEXT:    "id": "0x{{.*}}",
-// CHECK-NEXT:    "kind": "CompoundStmt",
-// CHECK-NEXT:    "range": {
-// CHECK-NEXT:     "begin": {
-// CHECK-NEXT:      "col": 56,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "line": 83,
-// CHECK-NEXT:      "col": 1,
-// CHECK-NEXT:      "tokLen": 1
-// 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:        "line": 73,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 6,
-// CHECK-NEXT:        "tokLen": 1
-// 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": "ArraySubscriptExpr",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 6,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "int"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "lvalue",
-// 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:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             },
-// CHECK-NEXT:             "end": {
-// CHECK-NEXT:              "col": 3,
-// CHECK-NEXT:              "tokLen": 1
-// 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": "a",
-// 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": "IntegerLiteral",
-// CHECK-NEXT:          "range": {
-// CHECK-NEXT:           "begin": {
-// CHECK-NEXT:            "col": 5,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 5,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           }
-// CHECK-NEXT:          },
-// CHECK-NEXT:          "type": {
-// CHECK-NEXT:           "qualType": "int"
-// CHECK-NEXT:          },
-// CHECK-NEXT:          "valueCategory": "rvalue",
-// CHECK-NEXT:          "value": "0"
-// CHECK-NEXT:         }
-// CHECK-NEXT:        ]
-// CHECK-NEXT:       }
-// CHECK-NEXT:      ]
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "CallExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 74,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 14
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 23,
-// CHECK-NEXT:        "tokLen": 1
-// 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": "ImplicitCastExpr",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 14
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 14
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "void (*)(int, int *)"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "rvalue",
-// CHECK-NEXT:        "castKind": "FunctionToPointerDecay",
-// 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:            "tokLen": 14
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 14
-// CHECK-NEXT:           }
-// CHECK-NEXT:          },
-// CHECK-NEXT:          "type": {
-// CHECK-NEXT:           "qualType": "void (int, int *)"
-// CHECK-NEXT:          },
-// CHECK-NEXT:          "valueCategory": "rvalue",
-// CHECK-NEXT:          "referencedDecl": {
-// CHECK-NEXT:           "id": "0x{{.*}}",
-// CHECK-NEXT:           "kind": "FunctionDecl",
-// CHECK-NEXT:           "name": "UnaryOperators",
-// CHECK-NEXT:           "type": {
-// CHECK-NEXT:            "qualType": "void (int, 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": 18,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 19,
-// CHECK-NEXT:          "tokLen": 1
-// 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": "UnaryOperator",
-// CHECK-NEXT:          "range": {
-// CHECK-NEXT:           "begin": {
-// CHECK-NEXT:            "col": 18,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 19,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           }
-// CHECK-NEXT:          },
-// CHECK-NEXT:          "type": {
-// CHECK-NEXT:           "qualType": "int"
-// CHECK-NEXT:          },
-// CHECK-NEXT:          "valueCategory": "lvalue",
-// CHECK-NEXT:          "isPostfix": false,
-// CHECK-NEXT:          "opcode": "*",
-// CHECK-NEXT:          "canOverflow": false,
-// 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:              "tokLen": 1
-// CHECK-NEXT:             },
-// CHECK-NEXT:             "end": {
-// CHECK-NEXT:              "col": 19,
-// CHECK-NEXT:              "tokLen": 1
-// 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": 19,
-// CHECK-NEXT:                "tokLen": 1
-// CHECK-NEXT:               },
-// CHECK-NEXT:               "end": {
-// CHECK-NEXT:                "col": 19,
-// CHECK-NEXT:                "tokLen": 1
-// 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": "a",
-// 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": "ImplicitCastExpr",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 22,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 22,
-// CHECK-NEXT:          "tokLen": 1
-// 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": 22,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 22,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "ImplicitCastExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 76,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 5,
-// CHECK-NEXT:        "tokLen": 1
-// 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": "MemberExpr",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 5,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "int"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "lvalue",
-// CHECK-NEXT:        "name": "a",
-// CHECK-NEXT:        "isArrow": false,
-// CHECK-NEXT:        "referencedMemberDecl": "0x{{.*}}",
-// 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:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           }
-// CHECK-NEXT:          },
-// CHECK-NEXT:          "type": {
-// CHECK-NEXT:           "desugaredQualType": "struct S",
-// CHECK-NEXT:           "qualType": "struct S"
-// CHECK-NEXT:          },
-// CHECK-NEXT:          "valueCategory": "lvalue",
-// CHECK-NEXT:          "referencedDecl": {
-// CHECK-NEXT:           "id": "0x{{.*}}",
-// CHECK-NEXT:           "kind": "ParmVarDecl",
-// CHECK-NEXT:           "name": "b",
-// CHECK-NEXT:           "type": {
-// CHECK-NEXT:            "desugaredQualType": "struct S",
-// CHECK-NEXT:            "qualType": "struct S"
-// CHECK-NEXT:           }
-// CHECK-NEXT:          }
-// 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:        "line": 77,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 6,
-// CHECK-NEXT:        "tokLen": 1
-// 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": "MemberExpr",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 6,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "int"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "lvalue",
-// CHECK-NEXT:        "name": "a",
-// CHECK-NEXT:        "isArrow": true,
-// CHECK-NEXT:        "referencedMemberDecl": "0x{{.*}}",
-// 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:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 3,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           }
-// CHECK-NEXT:          },
-// CHECK-NEXT:          "type": {
-// CHECK-NEXT:           "qualType": "struct 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:              "tokLen": 1
-// CHECK-NEXT:             },
-// CHECK-NEXT:             "end": {
-// CHECK-NEXT:              "col": 3,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             }
-// CHECK-NEXT:            },
-// CHECK-NEXT:            "type": {
-// CHECK-NEXT:             "qualType": "struct S *"
-// CHECK-NEXT:            },
-// CHECK-NEXT:            "valueCategory": "lvalue",
-// CHECK-NEXT:            "referencedDecl": {
-// CHECK-NEXT:             "id": "0x{{.*}}",
-// CHECK-NEXT:             "kind": "ParmVarDecl",
-// CHECK-NEXT:             "name": "c",
-// CHECK-NEXT:             "type": {
-// CHECK-NEXT:              "qualType": "struct S *"
-// 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": "ImplicitCastExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 81,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 25,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int *"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT:      "inner": [
-// CHECK-NEXT:       {
-// CHECK-NEXT:        "id": "0x{{.*}}",
-// CHECK-NEXT:        "kind": "CompoundLiteralExpr",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 25,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "int [4]"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "lvalue",
-// CHECK-NEXT:        "inner": [
-// CHECK-NEXT:         {
-// CHECK-NEXT:          "id": "0x{{.*}}",
-// CHECK-NEXT:          "kind": "InitListExpr",
-// CHECK-NEXT:          "range": {
-// CHECK-NEXT:           "begin": {
-// CHECK-NEXT:            "col": 12,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 25,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           }
-// CHECK-NEXT:          },
-// CHECK-NEXT:          "type": {
-// CHECK-NEXT:           "qualType": "int [4]"
-// 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": 13,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             },
-// CHECK-NEXT:             "end": {
-// CHECK-NEXT:              "col": 13,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             }
-// CHECK-NEXT:            },
-// CHECK-NEXT:            "type": {
-// CHECK-NEXT:             "qualType": "int"
-// CHECK-NEXT:            },
-// CHECK-NEXT:            "valueCategory": "rvalue",
-// CHECK-NEXT:            "value": "1"
-// CHECK-NEXT:           },
-// CHECK-NEXT:           {
-// CHECK-NEXT:            "id": "0x{{.*}}",
-// CHECK-NEXT:            "kind": "IntegerLiteral",
-// CHECK-NEXT:            "range": {
-// CHECK-NEXT:             "begin": {
-// CHECK-NEXT:              "col": 16,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             },
-// CHECK-NEXT:             "end": {
-// CHECK-NEXT:              "col": 16,
-// CHECK-NEXT:              "tokLen": 1
-// 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:            "id": "0x{{.*}}",
-// CHECK-NEXT:            "kind": "IntegerLiteral",
-// CHECK-NEXT:            "range": {
-// CHECK-NEXT:             "begin": {
-// CHECK-NEXT:              "col": 19,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             },
-// CHECK-NEXT:             "end": {
-// CHECK-NEXT:              "col": 19,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             }
-// CHECK-NEXT:            },
-// CHECK-NEXT:            "type": {
-// CHECK-NEXT:             "qualType": "int"
-// CHECK-NEXT:            },
-// CHECK-NEXT:            "valueCategory": "rvalue",
-// CHECK-NEXT:            "value": "3"
-// CHECK-NEXT:           },
-// CHECK-NEXT:           {
-// CHECK-NEXT:            "id": "0x{{.*}}",
-// CHECK-NEXT:            "kind": "IntegerLiteral",
-// CHECK-NEXT:            "range": {
-// CHECK-NEXT:             "begin": {
-// CHECK-NEXT:              "col": 22,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             },
-// CHECK-NEXT:             "end": {
-// CHECK-NEXT:              "col": 22,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             }
-// CHECK-NEXT:            },
-// CHECK-NEXT:            "type": {
-// CHECK-NEXT:             "qualType": "int"
-// CHECK-NEXT:            },
-// CHECK-NEXT:            "valueCategory": "rvalue",
-// CHECK-NEXT:            "value": "4"
-// CHECK-NEXT:           }
-// CHECK-NEXT:          ]
-// 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:        "line": 82,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 15,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "desugaredQualType": "struct S",
-// CHECK-NEXT:       "qualType": "struct S"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "castKind": "LValueToRValue",
-// CHECK-NEXT:      "inner": [
-// CHECK-NEXT:       {
-// CHECK-NEXT:        "id": "0x{{.*}}",
-// CHECK-NEXT:        "kind": "CompoundLiteralExpr",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 15,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "desugaredQualType": "struct S",
-// CHECK-NEXT:         "qualType": "struct S"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "lvalue",
-// CHECK-NEXT:        "inner": [
-// CHECK-NEXT:         {
-// CHECK-NEXT:          "id": "0x{{.*}}",
-// CHECK-NEXT:          "kind": "InitListExpr",
-// CHECK-NEXT:          "range": {
-// CHECK-NEXT:           "begin": {
-// CHECK-NEXT:            "col": 13,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 15,
-// CHECK-NEXT:            "tokLen": 1
-// CHECK-NEXT:           }
-// CHECK-NEXT:          },
-// CHECK-NEXT:          "type": {
-// CHECK-NEXT:           "desugaredQualType": "struct S",
-// CHECK-NEXT:           "qualType": "struct S"
-// 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": 14,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             },
-// CHECK-NEXT:             "end": {
-// CHECK-NEXT:              "col": 14,
-// CHECK-NEXT:              "tokLen": 1
-// CHECK-NEXT:             }
-// CHECK-NEXT:            },
-// CHECK-NEXT:            "type": {
-// CHECK-NEXT:             "qualType": "int"
-// CHECK-NEXT:            },
-// CHECK-NEXT:            "valueCategory": "rvalue",
-// CHECK-NEXT:            "value": "1"
-// CHECK-NEXT:           }
-// CHECK-NEXT:          ]
-// CHECK-NEXT:         }
-// CHECK-NEXT:        ]
-// CHECK-NEXT:       }
-// CHECK-NEXT:      ]
-// CHECK-NEXT:     }
-// CHECK-NEXT:    ]
-// CHECK-NEXT:   }
-// CHECK-NEXT:  ]
-// CHECK-NEXT: }
-
-
-// CHECK:  "kind": "FunctionDecl",
-// CHECK-NEXT:  "loc": {
-// CHECK-NEXT:   "line": 87,
-// CHECK-NEXT:   "col": 6,
-// CHECK-NEXT:   "tokLen": 18
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "range": {
-// CHECK-NEXT:   "begin": {
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 4
-// CHECK-NEXT:   },
-// CHECK-NEXT:   "end": {
-// CHECK-NEXT:    "line": 106,
-// CHECK-NEXT:    "col": 1,
-// CHECK-NEXT:    "tokLen": 1
-// CHECK-NEXT:   }
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "name": "PrimaryExpressions",
-// 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:     "line": 87,
-// CHECK-NEXT:     "col": 29,
-// CHECK-NEXT:     "tokLen": 1
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "range": {
-// CHECK-NEXT:     "begin": {
-// CHECK-NEXT:      "col": 25,
-// CHECK-NEXT:      "tokLen": 3
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "col": 29,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     }
-// CHECK-NEXT:    },
-// CHECK-NEXT:    "isUsed": true,
-// CHECK-NEXT:    "name": "a",
-// 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": 32,
-// CHECK-NEXT:      "tokLen": 1
-// CHECK-NEXT:     },
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "line": 106,
-// CHECK-NEXT:      "col": 1,
-// CHECK-NEXT:      "tokLen": 1
-// 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:        "line": 88,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// 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": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// 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": "a",
-// 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": "CharacterLiteral",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 89,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 3
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 3
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "value": 97
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "CharacterLiteral",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 90,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 4
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 4
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "value": 97
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "ImplicitCastExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 91,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 3
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 3
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "char *"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT:      "inner": [
-// CHECK-NEXT:       {
-// CHECK-NEXT:        "id": "0x{{.*}}",
-// CHECK-NEXT:        "kind": "StringLiteral",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 3
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 3
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "char [2]"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "lvalue",
-// CHECK-NEXT:        "value": "\"a\""
-// CHECK-NEXT:       }
-// CHECK-NEXT:      ]
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "ImplicitCastExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 92,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 4
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 4
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int *"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT:      "inner": [
-// CHECK-NEXT:       {
-// CHECK-NEXT:        "id": "0x{{.*}}",
-// CHECK-NEXT:        "kind": "StringLiteral",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 4
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 4
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "int [2]"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "lvalue",
-// CHECK-NEXT:        "value": "L\"a\""
-// CHECK-NEXT:       }
-// CHECK-NEXT:      ]
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "ImplicitCastExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 93,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 5
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 5
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "char *"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT:      "inner": [
-// CHECK-NEXT:       {
-// CHECK-NEXT:        "id": "0x{{.*}}",
-// CHECK-NEXT:        "kind": "StringLiteral",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 5
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 5
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "char [2]"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "lvalue",
-// CHECK-NEXT:        "value": "u8\"a\""
-// CHECK-NEXT:       }
-// CHECK-NEXT:      ]
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "ImplicitCastExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 94,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 4
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 4
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "unsigned int *"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT:      "inner": [
-// CHECK-NEXT:       {
-// CHECK-NEXT:        "id": "0x{{.*}}",
-// CHECK-NEXT:        "kind": "StringLiteral",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 4
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 4
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "unsigned int [2]"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "lvalue",
-// CHECK-NEXT:        "value": "U\"a\""
-// CHECK-NEXT:       }
-// CHECK-NEXT:      ]
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "ImplicitCastExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 95,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 4
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 4
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "unsigned short *"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "castKind": "ArrayToPointerDecay",
-// CHECK-NEXT:      "inner": [
-// CHECK-NEXT:       {
-// CHECK-NEXT:        "id": "0x{{.*}}",
-// CHECK-NEXT:        "kind": "StringLiteral",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 4
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 4
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "unsigned short [2]"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "lvalue",
-// CHECK-NEXT:        "value": "u\"a\""
-// CHECK-NEXT:       }
-// CHECK-NEXT:      ]
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "IntegerLiteral",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 97,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "value": "1"
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "IntegerLiteral",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 98,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 2
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 2
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "unsigned int"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "value": "1"
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "IntegerLiteral",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 99,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 3
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 3
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "long long"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "value": "1"
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "FloatingLiteral",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 100,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 3
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 3
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "double"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "value": 1
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "FloatingLiteral",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 101,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 4
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 4
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "float"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "value": 1
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "FloatingLiteral",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 102,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 4
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 4
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "long double"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "value": 1
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "DeclRefExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 103,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 3
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 3
-// CHECK-NEXT:       }
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "int"
-// CHECK-NEXT:      },
-// CHECK-NEXT:      "valueCategory": "rvalue",
-// CHECK-NEXT:      "referencedDecl": {
-// CHECK-NEXT:       "id": "0x{{.*}}",
-// CHECK-NEXT:       "kind": "EnumConstantDecl",
-// CHECK-NEXT:       "name": "One",
-// CHECK-NEXT:       "type": {
-// CHECK-NEXT:        "qualType": "int"
-// CHECK-NEXT:       }
-// CHECK-NEXT:      }
-// CHECK-NEXT:     },
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}",
-// CHECK-NEXT:      "kind": "ImplicitCastExpr",
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "line": 105,
-// CHECK-NEXT:        "col": 3,
-// CHECK-NEXT:        "tokLen": 1
-// CHECK-NEXT:       },
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 5,
-// CHECK-NEXT:        "tokLen": 1
-// 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": "ParenExpr",
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         },
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 5,
-// CHECK-NEXT:          "tokLen": 1
-// CHECK-NEXT:         }
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "int"
-// CHECK-NEXT:        },
-// CHECK-NEXT:        "valueCategory": "lvalue",
-// 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:            "tokLen": 1
-// CHECK-NEXT:           },
-// CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 4,
-// CHECK-NEXT:            "tokLen": 1
-// 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": "a",
-// 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: }
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -std=gnu11 -ast-dump=json %s | FileCheck %s\r
+\r
+void Comma(void) {\r
+  1, 2, 3;\r
+}\r
+\r
+void Assignment(int a) {\r
+  a = 12;\r
+  a += a;\r
+}\r
+\r
+void Conditionals(int a) {\r
+  a ? 0 : 1;\r
+  a ?: 0;\r
+}\r
+\r
+void BinaryOperators(int a, int b) {\r
+  // Logical operators\r
+  a || b;\r
+  a && b;\r
+\r
+  // Bitwise operators\r
+  a | b;\r
+  a ^ b;\r
+  a & b;\r
+\r
+  // Equality operators\r
+  a == b;\r
+  a != b;\r
+\r
+  // Relational operators\r
+  a < b;\r
+  a > b;\r
+  a <= b;\r
+  a >= b;\r
+\r
+  // Bit shifting operators\r
+  a << b;\r
+  a >> b;\r
+\r
+  // Additive operators\r
+  a + b;\r
+  a - b;\r
+\r
+  // Multiplicative operators\r
+  a * b;\r
+  a / b;\r
+  a % b;\r
+}\r
+\r
+void UnaryOperators(int a, int *b) {\r
+  // Cast operators\r
+  (float)a;\r
+\r
+  // ++, --, and ~ are covered elsewhere.\r
+\r
+  -a;\r
+  +a;\r
+  &a;\r
+  *b;\r
+  !a;\r
+\r
+  sizeof a;\r
+  sizeof(int);\r
+  _Alignof(int);\r
+}\r
+\r
+struct S {\r
+  int a;\r
+};\r
+\r
+void PostfixOperators(int *a, struct S b, struct S *c) {\r
+  a[0];\r
+  UnaryOperators(*a, a);\r
+\r
+  b.a;\r
+  c->a;\r
+\r
+  // Postfix ++ and -- are covered elsewhere.\r
+\r
+  (int [4]){1, 2, 3, 4, };\r
+  (struct S){1};\r
+}\r
+\r
+enum E { One };\r
+\r
+void PrimaryExpressions(int a) {\r
+  a;\r
+  'a';\r
+  L'a';\r
+  "a";\r
+  L"a";\r
+  u8"a";\r
+  U"a";\r
+  u"a";\r
+\r
+  1;\r
+  1u;\r
+  1ll;\r
+  1.0;\r
+  1.0f;\r
+  0xFp100000000000000000000F;\r
+  1.0l;\r
+  One;\r
+\r
+  (a);\r
+}\r
+\r
+// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py\r
+// using --filters=FunctionDecl\r
+\r
+\r
+// CHECK:  "kind": "FunctionDecl",\r
+// CHECK-NEXT:  "loc": {\r
+// CHECK-NEXT:   "file": "{{.*}}",\r
+// CHECK-NEXT:   "line": 3,\r
+// CHECK-NEXT:   "col": 6,\r
+// CHECK-NEXT:   "tokLen": 5\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "range": {\r
+// CHECK-NEXT:   "begin": {\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 4\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   "end": {\r
+// CHECK-NEXT:    "line": 5,\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 1\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "name": "Comma",\r
+// CHECK-NEXT:  "type": {\r
+// CHECK-NEXT:   "qualType": "void (void)"\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "inner": [\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "CompoundStmt",\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "line": 3,\r
+// CHECK-NEXT:      "col": 18,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "line": 5,\r
+// CHECK-NEXT:      "col": 1,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "inner": [\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 4,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 9,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": ",",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "BinaryOperator",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 6,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "opcode": ",",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "IntegerLiteral",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "rvalue",\r
+// CHECK-NEXT:          "value": "1"\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "IntegerLiteral",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 6,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 6,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "rvalue",\r
+// CHECK-NEXT:          "value": "2"\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "IntegerLiteral",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 9,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 9,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "value": "3"\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    ]\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  ]\r
+// CHECK-NEXT: }\r
+\r
+\r
+// CHECK:  "kind": "FunctionDecl",\r
+// CHECK-NEXT:  "loc": {\r
+// CHECK-NEXT:   "line": 7,\r
+// CHECK-NEXT:   "col": 6,\r
+// CHECK-NEXT:   "tokLen": 10\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "range": {\r
+// CHECK-NEXT:   "begin": {\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 4\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   "end": {\r
+// CHECK-NEXT:    "line": 10,\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 1\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "name": "Assignment",\r
+// CHECK-NEXT:  "type": {\r
+// CHECK-NEXT:   "qualType": "void (int)"\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "inner": [\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "ParmVarDecl",\r
+// CHECK-NEXT:    "loc": {\r
+// CHECK-NEXT:     "line": 7,\r
+// CHECK-NEXT:     "col": 21,\r
+// CHECK-NEXT:     "tokLen": 1\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 17,\r
+// CHECK-NEXT:      "tokLen": 3\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "col": 21,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "isUsed": true,\r
+// CHECK-NEXT:    "name": "a",\r
+// CHECK-NEXT:    "type": {\r
+// CHECK-NEXT:     "qualType": "int"\r
+// CHECK-NEXT:    }\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "CompoundStmt",\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 24,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "line": 10,\r
+// CHECK-NEXT:      "col": 1,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "inner": [\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 8,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 7,\r
+// CHECK-NEXT:        "tokLen": 2\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "=",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "DeclRefExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "referencedDecl": {\r
+// CHECK-NEXT:         "id": "0x{{.*}}",\r
+// CHECK-NEXT:         "kind": "ParmVarDecl",\r
+// CHECK-NEXT:         "name": "a",\r
+// CHECK-NEXT:         "type": {\r
+// CHECK-NEXT:          "qualType": "int"\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        }\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "IntegerLiteral",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 2\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 2\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "value": "12"\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "CompoundAssignOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 9,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 8,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "+=",\r
+// CHECK-NEXT:      "computeLHSType": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "computeResultType": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "DeclRefExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "referencedDecl": {\r
+// CHECK-NEXT:         "id": "0x{{.*}}",\r
+// CHECK-NEXT:         "kind": "ParmVarDecl",\r
+// CHECK-NEXT:         "name": "a",\r
+// CHECK-NEXT:         "type": {\r
+// CHECK-NEXT:          "qualType": "int"\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        }\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    ]\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  ]\r
+// CHECK-NEXT: }\r
+\r
+\r
+// CHECK:  "kind": "FunctionDecl",\r
+// CHECK-NEXT:  "loc": {\r
+// CHECK-NEXT:   "line": 12,\r
+// CHECK-NEXT:   "col": 6,\r
+// CHECK-NEXT:   "tokLen": 12\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "range": {\r
+// CHECK-NEXT:   "begin": {\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 4\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   "end": {\r
+// CHECK-NEXT:    "line": 15,\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 1\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "name": "Conditionals",\r
+// CHECK-NEXT:  "type": {\r
+// CHECK-NEXT:   "qualType": "void (int)"\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "inner": [\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "ParmVarDecl",\r
+// CHECK-NEXT:    "loc": {\r
+// CHECK-NEXT:     "line": 12,\r
+// CHECK-NEXT:     "col": 23,\r
+// CHECK-NEXT:     "tokLen": 1\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 19,\r
+// CHECK-NEXT:      "tokLen": 3\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "col": 23,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "isUsed": true,\r
+// CHECK-NEXT:    "name": "a",\r
+// CHECK-NEXT:    "type": {\r
+// CHECK-NEXT:     "qualType": "int"\r
+// CHECK-NEXT:    }\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "CompoundStmt",\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 26,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "line": 15,\r
+// CHECK-NEXT:      "col": 1,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "inner": [\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ConditionalOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 13,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 11,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "IntegerLiteral",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "value": "0"\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "IntegerLiteral",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 11,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 11,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "value": "1"\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryConditionalOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 14,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 8,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "OpaqueValueExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "rvalue",\r
+// CHECK-NEXT:          "castKind": "LValueToRValue",\r
+// CHECK-NEXT:          "inner": [\r
+// CHECK-NEXT:           {\r
+// CHECK-NEXT:            "id": "0x{{.*}}",\r
+// CHECK-NEXT:            "kind": "DeclRefExpr",\r
+// CHECK-NEXT:            "range": {\r
+// CHECK-NEXT:             "begin": {\r
+// CHECK-NEXT:              "col": 3,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             },\r
+// CHECK-NEXT:             "end": {\r
+// CHECK-NEXT:              "col": 3,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "type": {\r
+// CHECK-NEXT:             "qualType": "int"\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "valueCategory": "lvalue",\r
+// CHECK-NEXT:            "referencedDecl": {\r
+// CHECK-NEXT:             "id": "0x{{.*}}",\r
+// CHECK-NEXT:             "kind": "ParmVarDecl",\r
+// CHECK-NEXT:             "name": "a",\r
+// CHECK-NEXT:             "type": {\r
+// CHECK-NEXT:              "qualType": "int"\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            }\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          ]\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "OpaqueValueExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "rvalue",\r
+// CHECK-NEXT:          "castKind": "LValueToRValue",\r
+// CHECK-NEXT:          "inner": [\r
+// CHECK-NEXT:           {\r
+// CHECK-NEXT:            "id": "0x{{.*}}",\r
+// CHECK-NEXT:            "kind": "DeclRefExpr",\r
+// CHECK-NEXT:            "range": {\r
+// CHECK-NEXT:             "begin": {\r
+// CHECK-NEXT:              "col": 3,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             },\r
+// CHECK-NEXT:             "end": {\r
+// CHECK-NEXT:              "col": 3,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "type": {\r
+// CHECK-NEXT:             "qualType": "int"\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "valueCategory": "lvalue",\r
+// CHECK-NEXT:            "referencedDecl": {\r
+// CHECK-NEXT:             "id": "0x{{.*}}",\r
+// CHECK-NEXT:             "kind": "ParmVarDecl",\r
+// CHECK-NEXT:             "name": "a",\r
+// CHECK-NEXT:             "type": {\r
+// CHECK-NEXT:              "qualType": "int"\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            }\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          ]\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "IntegerLiteral",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "value": "0"\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    ]\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  ]\r
+// CHECK-NEXT: }\r
+\r
+\r
+// CHECK:  "kind": "FunctionDecl",\r
+// CHECK-NEXT:  "loc": {\r
+// CHECK-NEXT:   "line": 17,\r
+// CHECK-NEXT:   "col": 6,\r
+// CHECK-NEXT:   "tokLen": 15\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "range": {\r
+// CHECK-NEXT:   "begin": {\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 4\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   "end": {\r
+// CHECK-NEXT:    "line": 49,\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 1\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "name": "BinaryOperators",\r
+// CHECK-NEXT:  "type": {\r
+// CHECK-NEXT:   "qualType": "void (int, int)"\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "inner": [\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "ParmVarDecl",\r
+// CHECK-NEXT:    "loc": {\r
+// CHECK-NEXT:     "line": 17,\r
+// CHECK-NEXT:     "col": 26,\r
+// CHECK-NEXT:     "tokLen": 1\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 22,\r
+// CHECK-NEXT:      "tokLen": 3\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "col": 26,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "isUsed": true,\r
+// CHECK-NEXT:    "name": "a",\r
+// CHECK-NEXT:    "type": {\r
+// CHECK-NEXT:     "qualType": "int"\r
+// CHECK-NEXT:    }\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "ParmVarDecl",\r
+// CHECK-NEXT:    "loc": {\r
+// CHECK-NEXT:     "col": 33,\r
+// CHECK-NEXT:     "tokLen": 1\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 29,\r
+// CHECK-NEXT:      "tokLen": 3\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "col": 33,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "isUsed": true,\r
+// CHECK-NEXT:    "name": "b",\r
+// CHECK-NEXT:    "type": {\r
+// CHECK-NEXT:     "qualType": "int"\r
+// CHECK-NEXT:    }\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "CompoundStmt",\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 36,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "line": 49,\r
+// CHECK-NEXT:      "col": 1,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "inner": [\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 19,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 8,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "||",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 20,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 8,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "&&",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 23,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 7,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "|",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 24,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 7,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "^",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 25,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 7,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "&",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 28,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 8,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "==",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 29,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 8,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "!=",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 32,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 7,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "<",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 33,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 7,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": ">",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 34,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 8,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "<=",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 35,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 8,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": ">=",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 38,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 8,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "<<",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 39,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 8,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": ">>",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 8,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 8,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 42,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 7,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "+",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 43,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 7,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "-",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 46,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 7,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "*",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 47,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 7,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "/",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "BinaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 48,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 7,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "opcode": "%",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 7,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 7,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    ]\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  ]\r
+// CHECK-NEXT: }\r
+\r
+\r
+// CHECK:  "kind": "FunctionDecl",\r
+// CHECK-NEXT:  "loc": {\r
+// CHECK-NEXT:   "line": 51,\r
+// CHECK-NEXT:   "col": 6,\r
+// CHECK-NEXT:   "tokLen": 14\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "range": {\r
+// CHECK-NEXT:   "begin": {\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 4\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   "end": {\r
+// CHECK-NEXT:    "line": 66,\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 1\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "isUsed": true,\r
+// CHECK-NEXT:  "name": "UnaryOperators",\r
+// CHECK-NEXT:  "type": {\r
+// CHECK-NEXT:   "qualType": "void (int, int *)"\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "inner": [\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "ParmVarDecl",\r
+// CHECK-NEXT:    "loc": {\r
+// CHECK-NEXT:     "line": 51,\r
+// CHECK-NEXT:     "col": 25,\r
+// CHECK-NEXT:     "tokLen": 1\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 21,\r
+// CHECK-NEXT:      "tokLen": 3\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "col": 25,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "isUsed": true,\r
+// CHECK-NEXT:    "name": "a",\r
+// CHECK-NEXT:    "type": {\r
+// CHECK-NEXT:     "qualType": "int"\r
+// CHECK-NEXT:    }\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "ParmVarDecl",\r
+// CHECK-NEXT:    "loc": {\r
+// CHECK-NEXT:     "col": 33,\r
+// CHECK-NEXT:     "tokLen": 1\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 28,\r
+// CHECK-NEXT:      "tokLen": 3\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "col": 33,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "isUsed": true,\r
+// CHECK-NEXT:    "name": "b",\r
+// CHECK-NEXT:    "type": {\r
+// CHECK-NEXT:     "qualType": "int *"\r
+// CHECK-NEXT:    }\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "CompoundStmt",\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 36,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "line": 66,\r
+// CHECK-NEXT:      "col": 1,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "inner": [\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "CStyleCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 53,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 10,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "float"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "IntegralToFloating",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 10,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 10,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "isPartOfExplicitCast": true,\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 10,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 10,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "UnaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 57,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 4,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "isPostfix": false,\r
+// CHECK-NEXT:      "opcode": "-",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 4,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 4,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 4,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 4,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "UnaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 58,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 4,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "isPostfix": false,\r
+// CHECK-NEXT:      "opcode": "+",\r
+// CHECK-NEXT:      "canOverflow": false,\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 4,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 4,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 4,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 4,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "UnaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 59,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 4,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int *"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "isPostfix": false,\r
+// CHECK-NEXT:      "opcode": "&",\r
+// CHECK-NEXT:      "canOverflow": false,\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "DeclRefExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 4,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 4,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "referencedDecl": {\r
+// CHECK-NEXT:         "id": "0x{{.*}}",\r
+// CHECK-NEXT:         "kind": "ParmVarDecl",\r
+// CHECK-NEXT:         "name": "a",\r
+// CHECK-NEXT:         "type": {\r
+// CHECK-NEXT:          "qualType": "int"\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        }\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 60,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 4,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "LValueToRValue",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "UnaryOperator",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 4,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "isPostfix": false,\r
+// CHECK-NEXT:        "opcode": "*",\r
+// CHECK-NEXT:        "canOverflow": false,\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 4,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 4,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int *"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "rvalue",\r
+// CHECK-NEXT:          "castKind": "LValueToRValue",\r
+// CHECK-NEXT:          "inner": [\r
+// CHECK-NEXT:           {\r
+// CHECK-NEXT:            "id": "0x{{.*}}",\r
+// CHECK-NEXT:            "kind": "DeclRefExpr",\r
+// CHECK-NEXT:            "range": {\r
+// CHECK-NEXT:             "begin": {\r
+// CHECK-NEXT:              "col": 4,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             },\r
+// CHECK-NEXT:             "end": {\r
+// CHECK-NEXT:              "col": 4,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "type": {\r
+// CHECK-NEXT:             "qualType": "int *"\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "valueCategory": "lvalue",\r
+// CHECK-NEXT:            "referencedDecl": {\r
+// CHECK-NEXT:             "id": "0x{{.*}}",\r
+// CHECK-NEXT:             "kind": "ParmVarDecl",\r
+// CHECK-NEXT:             "name": "b",\r
+// CHECK-NEXT:             "type": {\r
+// CHECK-NEXT:              "qualType": "int *"\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            }\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          ]\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "UnaryOperator",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 61,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 4,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "isPostfix": false,\r
+// CHECK-NEXT:      "opcode": "!",\r
+// CHECK-NEXT:      "canOverflow": false,\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 4,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 4,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 4,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 4,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "UnaryExprOrTypeTraitExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 63,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 6\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 10,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "unsigned long"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "name": "sizeof",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "DeclRefExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 10,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 10,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "referencedDecl": {\r
+// CHECK-NEXT:         "id": "0x{{.*}}",\r
+// CHECK-NEXT:         "kind": "ParmVarDecl",\r
+// CHECK-NEXT:         "name": "a",\r
+// CHECK-NEXT:         "type": {\r
+// CHECK-NEXT:          "qualType": "int"\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "nonOdrUseReason": "unevaluated"\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "UnaryExprOrTypeTraitExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 64,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 6\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 13,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "unsigned long"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "name": "sizeof",\r
+// CHECK-NEXT:      "argType": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      }\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "UnaryExprOrTypeTraitExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 65,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 8\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 15,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "unsigned long"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "name": "alignof",\r
+// CHECK-NEXT:      "argType": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      }\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    ]\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  ]\r
+// CHECK-NEXT: }\r
+\r
+\r
+// CHECK:  "kind": "FunctionDecl",\r
+// CHECK-NEXT:  "loc": {\r
+// CHECK-NEXT:   "line": 72,\r
+// CHECK-NEXT:   "col": 6,\r
+// CHECK-NEXT:   "tokLen": 16\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "range": {\r
+// CHECK-NEXT:   "begin": {\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 4\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   "end": {\r
+// CHECK-NEXT:    "line": 83,\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 1\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "name": "PostfixOperators",\r
+// CHECK-NEXT:  "type": {\r
+// CHECK-NEXT:   "qualType": "void (int *, struct S, struct S *)"\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "inner": [\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "ParmVarDecl",\r
+// CHECK-NEXT:    "loc": {\r
+// CHECK-NEXT:     "line": 72,\r
+// CHECK-NEXT:     "col": 28,\r
+// CHECK-NEXT:     "tokLen": 1\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 23,\r
+// CHECK-NEXT:      "tokLen": 3\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "col": 28,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "isUsed": true,\r
+// CHECK-NEXT:    "name": "a",\r
+// CHECK-NEXT:    "type": {\r
+// CHECK-NEXT:     "qualType": "int *"\r
+// CHECK-NEXT:    }\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "ParmVarDecl",\r
+// CHECK-NEXT:    "loc": {\r
+// CHECK-NEXT:     "col": 40,\r
+// CHECK-NEXT:     "tokLen": 1\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 31,\r
+// CHECK-NEXT:      "tokLen": 6\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "col": 40,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "isUsed": true,\r
+// CHECK-NEXT:    "name": "b",\r
+// CHECK-NEXT:    "type": {\r
+// CHECK-NEXT:     "desugaredQualType": "struct S",\r
+// CHECK-NEXT:     "qualType": "struct S"\r
+// CHECK-NEXT:    }\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "ParmVarDecl",\r
+// CHECK-NEXT:    "loc": {\r
+// CHECK-NEXT:     "col": 53,\r
+// CHECK-NEXT:     "tokLen": 1\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 43,\r
+// CHECK-NEXT:      "tokLen": 6\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "col": 53,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "isUsed": true,\r
+// CHECK-NEXT:    "name": "c",\r
+// CHECK-NEXT:    "type": {\r
+// CHECK-NEXT:     "qualType": "struct S *"\r
+// CHECK-NEXT:    }\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "CompoundStmt",\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 56,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "line": 83,\r
+// CHECK-NEXT:      "col": 1,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "inner": [\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 73,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 6,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "LValueToRValue",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ArraySubscriptExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 6,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int *"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "rvalue",\r
+// CHECK-NEXT:          "castKind": "LValueToRValue",\r
+// CHECK-NEXT:          "inner": [\r
+// CHECK-NEXT:           {\r
+// CHECK-NEXT:            "id": "0x{{.*}}",\r
+// CHECK-NEXT:            "kind": "DeclRefExpr",\r
+// CHECK-NEXT:            "range": {\r
+// CHECK-NEXT:             "begin": {\r
+// CHECK-NEXT:              "col": 3,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             },\r
+// CHECK-NEXT:             "end": {\r
+// CHECK-NEXT:              "col": 3,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "type": {\r
+// CHECK-NEXT:             "qualType": "int *"\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "valueCategory": "lvalue",\r
+// CHECK-NEXT:            "referencedDecl": {\r
+// CHECK-NEXT:             "id": "0x{{.*}}",\r
+// CHECK-NEXT:             "kind": "ParmVarDecl",\r
+// CHECK-NEXT:             "name": "a",\r
+// CHECK-NEXT:             "type": {\r
+// CHECK-NEXT:              "qualType": "int *"\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            }\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          ]\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "IntegerLiteral",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 5,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 5,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "rvalue",\r
+// CHECK-NEXT:          "value": "0"\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "CallExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 74,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 14\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 23,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "void"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 14\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 14\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "void (*)(int, int *)"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "FunctionToPointerDecay",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 14\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 14\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "void (int, int *)"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "rvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "FunctionDecl",\r
+// CHECK-NEXT:           "name": "UnaryOperators",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "void (int, int *)"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 18,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 19,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "UnaryOperator",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 18,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 19,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "isPostfix": false,\r
+// CHECK-NEXT:          "opcode": "*",\r
+// CHECK-NEXT:          "canOverflow": false,\r
+// CHECK-NEXT:          "inner": [\r
+// CHECK-NEXT:           {\r
+// CHECK-NEXT:            "id": "0x{{.*}}",\r
+// CHECK-NEXT:            "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:            "range": {\r
+// CHECK-NEXT:             "begin": {\r
+// CHECK-NEXT:              "col": 19,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             },\r
+// CHECK-NEXT:             "end": {\r
+// CHECK-NEXT:              "col": 19,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "type": {\r
+// CHECK-NEXT:             "qualType": "int *"\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "valueCategory": "rvalue",\r
+// CHECK-NEXT:            "castKind": "LValueToRValue",\r
+// CHECK-NEXT:            "inner": [\r
+// CHECK-NEXT:             {\r
+// CHECK-NEXT:              "id": "0x{{.*}}",\r
+// CHECK-NEXT:              "kind": "DeclRefExpr",\r
+// CHECK-NEXT:              "range": {\r
+// CHECK-NEXT:               "begin": {\r
+// CHECK-NEXT:                "col": 19,\r
+// CHECK-NEXT:                "tokLen": 1\r
+// CHECK-NEXT:               },\r
+// CHECK-NEXT:               "end": {\r
+// CHECK-NEXT:                "col": 19,\r
+// CHECK-NEXT:                "tokLen": 1\r
+// CHECK-NEXT:               }\r
+// CHECK-NEXT:              },\r
+// CHECK-NEXT:              "type": {\r
+// CHECK-NEXT:               "qualType": "int *"\r
+// CHECK-NEXT:              },\r
+// CHECK-NEXT:              "valueCategory": "lvalue",\r
+// CHECK-NEXT:              "referencedDecl": {\r
+// CHECK-NEXT:               "id": "0x{{.*}}",\r
+// CHECK-NEXT:               "kind": "ParmVarDecl",\r
+// CHECK-NEXT:               "name": "a",\r
+// CHECK-NEXT:               "type": {\r
+// CHECK-NEXT:                "qualType": "int *"\r
+// CHECK-NEXT:               }\r
+// CHECK-NEXT:              }\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            ]\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          ]\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 22,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 22,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int *"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "rvalue",\r
+// CHECK-NEXT:        "castKind": "LValueToRValue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 22,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 22,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int *"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int *"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 76,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 5,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "LValueToRValue",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "MemberExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 5,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "name": "a",\r
+// CHECK-NEXT:        "isArrow": false,\r
+// CHECK-NEXT:        "referencedMemberDecl": "0x{{.*}}",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "desugaredQualType": "struct S",\r
+// CHECK-NEXT:           "qualType": "struct S"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "b",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "desugaredQualType": "struct S",\r
+// CHECK-NEXT:            "qualType": "struct S"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 77,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 6,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "LValueToRValue",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "MemberExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 6,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "name": "a",\r
+// CHECK-NEXT:        "isArrow": true,\r
+// CHECK-NEXT:        "referencedMemberDecl": "0x{{.*}}",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 3,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "struct S *"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "rvalue",\r
+// CHECK-NEXT:          "castKind": "LValueToRValue",\r
+// CHECK-NEXT:          "inner": [\r
+// CHECK-NEXT:           {\r
+// CHECK-NEXT:            "id": "0x{{.*}}",\r
+// CHECK-NEXT:            "kind": "DeclRefExpr",\r
+// CHECK-NEXT:            "range": {\r
+// CHECK-NEXT:             "begin": {\r
+// CHECK-NEXT:              "col": 3,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             },\r
+// CHECK-NEXT:             "end": {\r
+// CHECK-NEXT:              "col": 3,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "type": {\r
+// CHECK-NEXT:             "qualType": "struct S *"\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "valueCategory": "lvalue",\r
+// CHECK-NEXT:            "referencedDecl": {\r
+// CHECK-NEXT:             "id": "0x{{.*}}",\r
+// CHECK-NEXT:             "kind": "ParmVarDecl",\r
+// CHECK-NEXT:             "name": "c",\r
+// CHECK-NEXT:             "type": {\r
+// CHECK-NEXT:              "qualType": "struct S *"\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            }\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          ]\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 81,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 25,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int *"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "ArrayToPointerDecay",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "CompoundLiteralExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 25,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int [4]"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "InitListExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 12,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 25,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int [4]"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "rvalue",\r
+// CHECK-NEXT:          "inner": [\r
+// CHECK-NEXT:           {\r
+// CHECK-NEXT:            "id": "0x{{.*}}",\r
+// CHECK-NEXT:            "kind": "IntegerLiteral",\r
+// CHECK-NEXT:            "range": {\r
+// CHECK-NEXT:             "begin": {\r
+// CHECK-NEXT:              "col": 13,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             },\r
+// CHECK-NEXT:             "end": {\r
+// CHECK-NEXT:              "col": 13,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "type": {\r
+// CHECK-NEXT:             "qualType": "int"\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "valueCategory": "rvalue",\r
+// CHECK-NEXT:            "value": "1"\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           {\r
+// CHECK-NEXT:            "id": "0x{{.*}}",\r
+// CHECK-NEXT:            "kind": "IntegerLiteral",\r
+// CHECK-NEXT:            "range": {\r
+// CHECK-NEXT:             "begin": {\r
+// CHECK-NEXT:              "col": 16,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             },\r
+// CHECK-NEXT:             "end": {\r
+// CHECK-NEXT:              "col": 16,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "type": {\r
+// CHECK-NEXT:             "qualType": "int"\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "valueCategory": "rvalue",\r
+// CHECK-NEXT:            "value": "2"\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           {\r
+// CHECK-NEXT:            "id": "0x{{.*}}",\r
+// CHECK-NEXT:            "kind": "IntegerLiteral",\r
+// CHECK-NEXT:            "range": {\r
+// CHECK-NEXT:             "begin": {\r
+// CHECK-NEXT:              "col": 19,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             },\r
+// CHECK-NEXT:             "end": {\r
+// CHECK-NEXT:              "col": 19,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "type": {\r
+// CHECK-NEXT:             "qualType": "int"\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "valueCategory": "rvalue",\r
+// CHECK-NEXT:            "value": "3"\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           {\r
+// CHECK-NEXT:            "id": "0x{{.*}}",\r
+// CHECK-NEXT:            "kind": "IntegerLiteral",\r
+// CHECK-NEXT:            "range": {\r
+// CHECK-NEXT:             "begin": {\r
+// CHECK-NEXT:              "col": 22,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             },\r
+// CHECK-NEXT:             "end": {\r
+// CHECK-NEXT:              "col": 22,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "type": {\r
+// CHECK-NEXT:             "qualType": "int"\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "valueCategory": "rvalue",\r
+// CHECK-NEXT:            "value": "4"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          ]\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 82,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 15,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "desugaredQualType": "struct S",\r
+// CHECK-NEXT:       "qualType": "struct S"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "LValueToRValue",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "CompoundLiteralExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 15,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "desugaredQualType": "struct S",\r
+// CHECK-NEXT:         "qualType": "struct S"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "InitListExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 13,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 15,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "desugaredQualType": "struct S",\r
+// CHECK-NEXT:           "qualType": "struct S"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "rvalue",\r
+// CHECK-NEXT:          "inner": [\r
+// CHECK-NEXT:           {\r
+// CHECK-NEXT:            "id": "0x{{.*}}",\r
+// CHECK-NEXT:            "kind": "IntegerLiteral",\r
+// CHECK-NEXT:            "range": {\r
+// CHECK-NEXT:             "begin": {\r
+// CHECK-NEXT:              "col": 14,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             },\r
+// CHECK-NEXT:             "end": {\r
+// CHECK-NEXT:              "col": 14,\r
+// CHECK-NEXT:              "tokLen": 1\r
+// CHECK-NEXT:             }\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "type": {\r
+// CHECK-NEXT:             "qualType": "int"\r
+// CHECK-NEXT:            },\r
+// CHECK-NEXT:            "valueCategory": "rvalue",\r
+// CHECK-NEXT:            "value": "1"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          ]\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    ]\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  ]\r
+// CHECK-NEXT: }\r
+\r
+\r
+// CHECK:  "kind": "FunctionDecl",\r
+// CHECK-NEXT:  "loc": {\r
+// CHECK-NEXT:   "line": 87,\r
+// CHECK-NEXT:   "col": 6,\r
+// CHECK-NEXT:   "tokLen": 18\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "range": {\r
+// CHECK-NEXT:   "begin": {\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 4\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   "end": {\r
+// CHECK-NEXT:    "line": 107,\r
+// CHECK-NEXT:    "col": 1,\r
+// CHECK-NEXT:    "tokLen": 1\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "name": "PrimaryExpressions",\r
+// CHECK-NEXT:  "type": {\r
+// CHECK-NEXT:   "qualType": "void (int)"\r
+// CHECK-NEXT:  },\r
+// CHECK-NEXT:  "inner": [\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "ParmVarDecl",\r
+// CHECK-NEXT:    "loc": {\r
+// CHECK-NEXT:     "line": 87,\r
+// CHECK-NEXT:     "col": 29,\r
+// CHECK-NEXT:     "tokLen": 1\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 25,\r
+// CHECK-NEXT:      "tokLen": 3\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "col": 29,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "isUsed": true,\r
+// CHECK-NEXT:    "name": "a",\r
+// CHECK-NEXT:    "type": {\r
+// CHECK-NEXT:     "qualType": "int"\r
+// CHECK-NEXT:    }\r
+// CHECK-NEXT:   },\r
+// CHECK-NEXT:   {\r
+// CHECK-NEXT:    "id": "0x{{.*}}",\r
+// CHECK-NEXT:    "kind": "CompoundStmt",\r
+// CHECK-NEXT:    "range": {\r
+// CHECK-NEXT:     "begin": {\r
+// CHECK-NEXT:      "col": 32,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     "end": {\r
+// CHECK-NEXT:      "line": 107,\r
+// CHECK-NEXT:      "col": 1,\r
+// CHECK-NEXT:      "tokLen": 1\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    },\r
+// CHECK-NEXT:    "inner": [\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 88,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "LValueToRValue",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "DeclRefExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "referencedDecl": {\r
+// CHECK-NEXT:         "id": "0x{{.*}}",\r
+// CHECK-NEXT:         "kind": "ParmVarDecl",\r
+// CHECK-NEXT:         "name": "a",\r
+// CHECK-NEXT:         "type": {\r
+// CHECK-NEXT:          "qualType": "int"\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        }\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "CharacterLiteral",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 89,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 3\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 3\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "value": 97\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "CharacterLiteral",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 90,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 4\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 4\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "value": 97\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 91,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 3\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 3\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "char *"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "ArrayToPointerDecay",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "StringLiteral",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 3\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 3\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "char [2]"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "value": "\"a\""\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 92,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 4\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 4\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int *"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "ArrayToPointerDecay",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "StringLiteral",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 4\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 4\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int [2]"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "value": "L\"a\""\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 93,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 5\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 5\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "char *"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "ArrayToPointerDecay",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "StringLiteral",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 5\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 5\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "char [2]"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "value": "u8\"a\""\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 94,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 4\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 4\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "unsigned int *"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "ArrayToPointerDecay",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "StringLiteral",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 4\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 4\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "unsigned int [2]"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "value": "U\"a\""\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 95,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 4\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 4\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "unsigned short *"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "ArrayToPointerDecay",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "StringLiteral",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 4\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 4\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "unsigned short [2]"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "value": "u\"a\""\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "IntegerLiteral",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 97,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "value": "1"\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "IntegerLiteral",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 98,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 2\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 2\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "unsigned int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "value": "1"\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "IntegerLiteral",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 99,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 3\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 3\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "long long"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "value": "1"\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "FloatingLiteral",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 100,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 3\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 3\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "double"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "value": "1"\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "FloatingLiteral",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 101,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 4\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 4\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "float"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "value": "1"\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "FloatingLiteral",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 102,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 26\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 26\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "float"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "value": "+Inf"\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "FloatingLiteral",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 103,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 4\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 4\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "long double"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "value": "1"\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "DeclRefExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 104,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 3\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 3\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "referencedDecl": {\r
+// CHECK-NEXT:       "id": "0x{{.*}}",\r
+// CHECK-NEXT:       "kind": "EnumConstantDecl",\r
+// CHECK-NEXT:       "name": "One",\r
+// CHECK-NEXT:       "type": {\r
+// CHECK-NEXT:        "qualType": "int"\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      }\r
+// CHECK-NEXT:     },\r
+// CHECK-NEXT:     {\r
+// CHECK-NEXT:      "id": "0x{{.*}}",\r
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",\r
+// CHECK-NEXT:      "range": {\r
+// CHECK-NEXT:       "begin": {\r
+// CHECK-NEXT:        "line": 106,\r
+// CHECK-NEXT:        "col": 3,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       },\r
+// CHECK-NEXT:       "end": {\r
+// CHECK-NEXT:        "col": 5,\r
+// CHECK-NEXT:        "tokLen": 1\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "type": {\r
+// CHECK-NEXT:       "qualType": "int"\r
+// CHECK-NEXT:      },\r
+// CHECK-NEXT:      "valueCategory": "rvalue",\r
+// CHECK-NEXT:      "castKind": "LValueToRValue",\r
+// CHECK-NEXT:      "inner": [\r
+// CHECK-NEXT:       {\r
+// CHECK-NEXT:        "id": "0x{{.*}}",\r
+// CHECK-NEXT:        "kind": "ParenExpr",\r
+// CHECK-NEXT:        "range": {\r
+// CHECK-NEXT:         "begin": {\r
+// CHECK-NEXT:          "col": 3,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         },\r
+// CHECK-NEXT:         "end": {\r
+// CHECK-NEXT:          "col": 5,\r
+// CHECK-NEXT:          "tokLen": 1\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "type": {\r
+// CHECK-NEXT:         "qualType": "int"\r
+// CHECK-NEXT:        },\r
+// CHECK-NEXT:        "valueCategory": "lvalue",\r
+// CHECK-NEXT:        "inner": [\r
+// CHECK-NEXT:         {\r
+// CHECK-NEXT:          "id": "0x{{.*}}",\r
+// CHECK-NEXT:          "kind": "DeclRefExpr",\r
+// CHECK-NEXT:          "range": {\r
+// CHECK-NEXT:           "begin": {\r
+// CHECK-NEXT:            "col": 4,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           },\r
+// CHECK-NEXT:           "end": {\r
+// CHECK-NEXT:            "col": 4,\r
+// CHECK-NEXT:            "tokLen": 1\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "type": {\r
+// CHECK-NEXT:           "qualType": "int"\r
+// CHECK-NEXT:          },\r
+// CHECK-NEXT:          "valueCategory": "lvalue",\r
+// CHECK-NEXT:          "referencedDecl": {\r
+// CHECK-NEXT:           "id": "0x{{.*}}",\r
+// CHECK-NEXT:           "kind": "ParmVarDecl",\r
+// CHECK-NEXT:           "name": "a",\r
+// CHECK-NEXT:           "type": {\r
+// CHECK-NEXT:            "qualType": "int"\r
+// CHECK-NEXT:           }\r
+// CHECK-NEXT:          }\r
+// CHECK-NEXT:         }\r
+// CHECK-NEXT:        ]\r
+// CHECK-NEXT:       }\r
+// CHECK-NEXT:      ]\r
+// CHECK-NEXT:     }\r
+// CHECK-NEXT:    ]\r
+// CHECK-NEXT:   }\r
+// CHECK-NEXT:  ]\r
+// CHECK-NEXT: }\r
index d9a6d95e8fe69a2ae0dda053f6af91b229b96158..3f1459b42119f05134044967110cd21c12f365ba 100644 (file)
@@ -226,7 +226,7 @@ void MaterializeTemp() {
 // CHECK-NEXT:         "qualType": "double"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "rvalue",
-// CHECK-NEXT:        "value": 1
+// CHECK-NEXT:        "value": "1"
 // CHECK-NEXT:       }
 // CHECK-NEXT:      ]
 // CHECK-NEXT:     }