]> granicus.if.org Git - clang/commitdiff
Dump more information about construct expressions (resolved and unresolved) when...
authorAaron Ballman <aaron@aaronballman.com>
Thu, 20 Jun 2019 13:19:41 +0000 (13:19 +0000)
committerAaron Ballman <aaron@aaronballman.com>
Thu, 20 Jun 2019 13:19:41 +0000 (13:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@363926 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/JSONNodeDumper.h
lib/AST/JSONNodeDumper.cpp
test/AST/ast-dump-expr-json.cpp
test/AST/ast-dump-stmt-json.cpp

index 39d1b1cb7f8db9854df7f9f4b14c989fe35aea0f..4ed3c4bda2183019cc8aa34b626d0e68d06fea81 100644 (file)
@@ -253,6 +253,8 @@ public:
   void VisitConstantExpr(const ConstantExpr *CE);
   void VisitInitListExpr(const InitListExpr *ILE);
   void VisitGenericSelectionExpr(const GenericSelectionExpr *GSE);
+  void VisitCXXUnresolvedConstructExpr(const CXXUnresolvedConstructExpr *UCE);
+  void VisitCXXConstructExpr(const CXXConstructExpr *CE);
 
   void VisitIntegerLiteral(const IntegerLiteral *IL);
   void VisitCharacterLiteral(const CharacterLiteral *CL);
index a19b66ceab5f5daf59a38cd373e60c97c2b25d78..15e198db46fcd6569e5a80114b1bb2239e83212d 100644 (file)
@@ -994,6 +994,38 @@ void JSONNodeDumper::VisitGenericSelectionExpr(
   attributeOnlyIfTrue("resultDependent", GSE->isResultDependent());
 }
 
+void JSONNodeDumper::VisitCXXUnresolvedConstructExpr(
+    const CXXUnresolvedConstructExpr *UCE) {
+  if (UCE->getType() != UCE->getTypeAsWritten())
+    JOS.attribute("typeAsWritten", createQualType(UCE->getTypeAsWritten()));
+  attributeOnlyIfTrue("list", UCE->isListInitialization());
+}
+
+void JSONNodeDumper::VisitCXXConstructExpr(const CXXConstructExpr *CE) {
+  CXXConstructorDecl *Ctor = CE->getConstructor();
+  JOS.attribute("ctorType", createQualType(Ctor->getType()));
+  attributeOnlyIfTrue("elidable", CE->isElidable());
+  attributeOnlyIfTrue("list", CE->isListInitialization());
+  attributeOnlyIfTrue("initializer_list", CE->isStdInitListInitialization());
+  attributeOnlyIfTrue("zeroing", CE->requiresZeroInitialization());
+  attributeOnlyIfTrue("hadMultipleCandidates", CE->hadMultipleCandidates());
+
+  switch (CE->getConstructionKind()) {
+  case CXXConstructExpr::CK_Complete:
+    JOS.attribute("constructionKind", "complete");
+    break;
+  case CXXConstructExpr::CK_Delegating:
+    JOS.attribute("constructionKind", "delegating");
+    break;
+  case CXXConstructExpr::CK_NonVirtualBase:
+    JOS.attribute("constructionKind", "non-virtual base");
+    break;
+  case CXXConstructExpr::CK_VirtualBase:
+    JOS.attribute("constructionKind", "virtual base");
+    break;
+  }
+}
+
 void JSONNodeDumper::VisitIntegerLiteral(const IntegerLiteral *IL) {
   JOS.attribute("value",
                 IL->getValue().toString(
index d5e3ce8defae8930f63569cf64a445eb6c60c142..59d1e229a922fdeb3a8316dc82d2e92be62ee99c 100644 (file)
@@ -7738,7 +7738,12 @@ void TestNonADLCall3() {
 // CHECK-NEXT:           "desugaredQualType": "NS::X",
 // CHECK-NEXT:           "qualType": "NS::X"
 // CHECK-NEXT:          },
-// CHECK-NEXT:          "valueCategory": "rvalue"
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "ctorType": {
+// CHECK-NEXT:           "qualType": "void () noexcept"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "hadMultipleCandidates": true,
+// CHECK-NEXT:          "constructionKind": "complete"
 // CHECK-NEXT:         }
 // CHECK-NEXT:        ]
 // CHECK-NEXT:       }
@@ -7835,6 +7840,11 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "NS::X"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "ctorType": {
+// CHECK-NEXT:         "qualType": "void (const NS::X &) noexcept"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "hadMultipleCandidates": true,
+// CHECK-NEXT:        "constructionKind": "complete",
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -7986,6 +7996,11 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "NS::X"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "ctorType": {
+// CHECK-NEXT:         "qualType": "void (const NS::X &) noexcept"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "hadMultipleCandidates": true,
+// CHECK-NEXT:        "constructionKind": "complete",
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -8153,7 +8168,12 @@ void TestNonADLCall3() {
 // CHECK-NEXT:           "desugaredQualType": "NS::X",
 // CHECK-NEXT:           "qualType": "NS::X"
 // CHECK-NEXT:          },
-// CHECK-NEXT:          "valueCategory": "rvalue"
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "ctorType": {
+// CHECK-NEXT:           "qualType": "void () noexcept"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "hadMultipleCandidates": true,
+// CHECK-NEXT:          "constructionKind": "complete"
 // CHECK-NEXT:         }
 // CHECK-NEXT:        ]
 // CHECK-NEXT:       }
@@ -8249,6 +8269,11 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "NS::X"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "ctorType": {
+// CHECK-NEXT:         "qualType": "void (const NS::X &) noexcept"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "hadMultipleCandidates": true,
+// CHECK-NEXT:        "constructionKind": "complete",
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -8416,7 +8441,12 @@ void TestNonADLCall3() {
 // CHECK-NEXT:           "desugaredQualType": "NS::X",
 // CHECK-NEXT:           "qualType": "NS::X"
 // CHECK-NEXT:          },
-// CHECK-NEXT:          "valueCategory": "rvalue"
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "ctorType": {
+// CHECK-NEXT:           "qualType": "void () noexcept"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "hadMultipleCandidates": true,
+// CHECK-NEXT:          "constructionKind": "complete"
 // CHECK-NEXT:         }
 // CHECK-NEXT:        ]
 // CHECK-NEXT:       }
@@ -8557,6 +8587,11 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "NS::X"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "ctorType": {
+// CHECK-NEXT:         "qualType": "void (const NS::X &) noexcept"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "hadMultipleCandidates": true,
+// CHECK-NEXT:        "constructionKind": "complete",
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -8708,6 +8743,11 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "NS::X"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "ctorType": {
+// CHECK-NEXT:         "qualType": "void (const NS::X &) noexcept"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "hadMultipleCandidates": true,
+// CHECK-NEXT:        "constructionKind": "complete",
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
@@ -8873,7 +8913,12 @@ void TestNonADLCall3() {
 // CHECK-NEXT:          "type": {
 // CHECK-NEXT:           "qualType": "NS::X"
 // CHECK-NEXT:          },
-// CHECK-NEXT:          "valueCategory": "rvalue"
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "ctorType": {
+// CHECK-NEXT:           "qualType": "void () noexcept"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "hadMultipleCandidates": true,
+// CHECK-NEXT:          "constructionKind": "complete"
 // CHECK-NEXT:         }
 // CHECK-NEXT:        ]
 // CHECK-NEXT:       }
@@ -8969,6 +9014,11 @@ void TestNonADLCall3() {
 // CHECK-NEXT:         "qualType": "NS::X"
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "ctorType": {
+// CHECK-NEXT:         "qualType": "void (const NS::X &) noexcept"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "hadMultipleCandidates": true,
+// CHECK-NEXT:        "constructionKind": "complete",
 // CHECK-NEXT:        "inner": [
 // CHECK-NEXT:         {
 // CHECK-NEXT:          "id": "0x{{.*}}",
index 0435a9a78385be83486cfaa4fdfa5d0614d6992b..2284cd3fcc3731201929de7dce4142cbab889a85 100644 (file)
@@ -51,6 +51,7 @@ template <typename T>
 void TestDependentScopeMemberExpr() {
   DependentScopeMemberExprWrapper<T> obj;
   obj.member = T();
+  obj.member = T{};
   (&obj)->member = T();
 }
 
@@ -1945,7 +1946,7 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:   "end": {
 // CHECK-NEXT:    "col": 1,
 // CHECK-NEXT:    "file": "{{.*}}",
-// CHECK-NEXT:    "line": 55
+// CHECK-NEXT:    "line": 56
 // CHECK-NEXT:   }
 // CHECK-NEXT:  },
 // CHECK-NEXT:  "name": "TestDependentScopeMemberExpr",
@@ -1993,7 +1994,7 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:     "end": {
 // CHECK-NEXT:      "col": 1,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 55
+// CHECK-NEXT:      "line": 56
 // CHECK-NEXT:     }
 // CHECK-NEXT:    },
 // CHECK-NEXT:    "name": "TestDependentScopeMemberExpr",
@@ -2013,7 +2014,7 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 1,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 55
+// CHECK-NEXT:        "line": 56
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "inner": [
@@ -2164,7 +2165,7 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "line": 54
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 22,
+// CHECK-NEXT:          "col": 18,
 // CHECK-NEXT:          "file": "{{.*}}",
 // CHECK-NEXT:          "line": 54
 // CHECK-NEXT:         }
@@ -2185,7 +2186,7 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:            "line": 54
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
-// CHECK-NEXT:            "col": 11,
+// CHECK-NEXT:            "col": 7,
 // CHECK-NEXT:            "file": "{{.*}}",
 // CHECK-NEXT:            "line": 54
 // CHECK-NEXT:           }
@@ -2197,7 +2198,7 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "inner": [
 // CHECK-NEXT:           {
 // CHECK-NEXT:            "id": "0x{{.*}}",
-// CHECK-NEXT:            "kind": "ParenExpr",
+// CHECK-NEXT:            "kind": "DeclRefExpr",
 // CHECK-NEXT:            "range": {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 3,
@@ -2205,12 +2206,128 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:              "line": 54
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
-// CHECK-NEXT:              "col": 8,
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 54
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "obj",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXUnresolvedConstructExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 16,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 54
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 18,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 54
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "T"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "list": true,
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "InitListExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 17,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 54
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 18,
 // CHECK-NEXT:              "file": "{{.*}}",
 // CHECK-NEXT:              "line": 54
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "BinaryOperator",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 55
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 22,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 55
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "<dependent type>"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "opcode": "=",
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXDependentScopeMemberExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 55
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 11,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 55
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "<dependent type>"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "ParenExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 55
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 8,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 55
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
 // CHECK-NEXT:             "qualType": "<dependent type>"
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "valueCategory": "rvalue",
@@ -2222,12 +2339,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 4,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 54
+// CHECK-NEXT:                "line": 55
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 5,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 54
+// CHECK-NEXT:                "line": 55
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -2245,12 +2362,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                 "begin": {
 // CHECK-NEXT:                  "col": 5,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 54
+// CHECK-NEXT:                  "line": 55
 // CHECK-NEXT:                 },
 // CHECK-NEXT:                 "end": {
 // CHECK-NEXT:                  "col": 5,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 54
+// CHECK-NEXT:                  "line": 55
 // CHECK-NEXT:                 }
 // CHECK-NEXT:                },
 // CHECK-NEXT:                "type": {
@@ -2279,12 +2396,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 20,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 54
+// CHECK-NEXT:            "line": 55
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 22,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 54
+// CHECK-NEXT:            "line": 55
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -2306,18 +2423,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:  "loc": {
 // CHECK-NEXT:   "col": 6,
 // CHECK-NEXT:   "file": "{{.*}}",
-// CHECK-NEXT:   "line": 62
+// CHECK-NEXT:   "line": 63
 // CHECK-NEXT:  },
 // CHECK-NEXT:  "range": {
 // CHECK-NEXT:   "begin": {
 // CHECK-NEXT:    "col": 1,
 // CHECK-NEXT:    "file": "{{.*}}",
-// CHECK-NEXT:    "line": 62
+// CHECK-NEXT:    "line": 63
 // CHECK-NEXT:   },
 // CHECK-NEXT:   "end": {
 // CHECK-NEXT:    "col": 1,
 // CHECK-NEXT:    "file": "{{.*}}",
-// CHECK-NEXT:    "line": 65
+// CHECK-NEXT:    "line": 66
 // CHECK-NEXT:   }
 // CHECK-NEXT:  },
 // CHECK-NEXT:  "name": "TestUnionInitList",
@@ -2332,12 +2449,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:     "begin": {
 // CHECK-NEXT:      "col": 1,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 63
+// CHECK-NEXT:      "line": 64
 // CHECK-NEXT:     },
 // CHECK-NEXT:     "end": {
 // CHECK-NEXT:      "col": 1,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 65
+// CHECK-NEXT:      "line": 66
 // CHECK-NEXT:     }
 // CHECK-NEXT:    },
 // CHECK-NEXT:    "inner": [
@@ -2348,12 +2465,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:       "begin": {
 // CHECK-NEXT:        "col": 3,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 64
+// CHECK-NEXT:        "line": 65
 // CHECK-NEXT:       },
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 16,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 64
+// CHECK-NEXT:        "line": 65
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "inner": [
@@ -2363,18 +2480,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:        "loc": {
 // CHECK-NEXT:         "col": 5,
 // CHECK-NEXT:         "file": "{{.*}}",
-// CHECK-NEXT:         "line": 64
+// CHECK-NEXT:         "line": 65
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "range": {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 3,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 64
+// CHECK-NEXT:          "line": 65
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 15,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 64
+// CHECK-NEXT:          "line": 65
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "name": "us",
@@ -2390,12 +2507,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 13,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 64
+// CHECK-NEXT:            "line": 65
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 15,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 64
+// CHECK-NEXT:            "line": 65
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -2410,12 +2527,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 15,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 64
+// CHECK-NEXT:              "line": 65
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 15,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 64
+// CHECK-NEXT:              "line": 65
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -2438,12 +2555,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 64
+// CHECK-NEXT:              "line": 65
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 64
+// CHECK-NEXT:              "line": 65
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -2466,12 +2583,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 64
+// CHECK-NEXT:                "line": 65
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 64
+// CHECK-NEXT:                "line": 65
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -2498,18 +2615,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:  "loc": {
 // CHECK-NEXT:   "col": 6,
 // CHECK-NEXT:   "file": "{{.*}}",
-// CHECK-NEXT:   "line": 67
+// CHECK-NEXT:   "line": 68
 // CHECK-NEXT:  },
 // CHECK-NEXT:  "range": {
 // CHECK-NEXT:   "begin": {
 // CHECK-NEXT:    "col": 1,
 // CHECK-NEXT:    "file": "{{.*}}",
-// CHECK-NEXT:    "line": 67
+// CHECK-NEXT:    "line": 68
 // CHECK-NEXT:   },
 // CHECK-NEXT:   "end": {
 // CHECK-NEXT:    "col": 1,
 // CHECK-NEXT:    "file": "{{.*}}",
-// CHECK-NEXT:    "line": 70
+// CHECK-NEXT:    "line": 71
 // CHECK-NEXT:   }
 // CHECK-NEXT:  },
 // CHECK-NEXT:  "name": "TestSwitch",
@@ -2523,18 +2640,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:    "loc": {
 // CHECK-NEXT:     "col": 21,
 // CHECK-NEXT:     "file": "{{.*}}",
-// CHECK-NEXT:     "line": 67
+// CHECK-NEXT:     "line": 68
 // CHECK-NEXT:    },
 // CHECK-NEXT:    "range": {
 // CHECK-NEXT:     "begin": {
 // CHECK-NEXT:      "col": 17,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 67
+// CHECK-NEXT:      "line": 68
 // CHECK-NEXT:     },
 // CHECK-NEXT:     "end": {
 // CHECK-NEXT:      "col": 21,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 67
+// CHECK-NEXT:      "line": 68
 // CHECK-NEXT:     }
 // CHECK-NEXT:    },
 // CHECK-NEXT:    "isUsed": true,
@@ -2550,12 +2667,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:     "begin": {
 // CHECK-NEXT:      "col": 24,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 67
+// CHECK-NEXT:      "line": 68
 // CHECK-NEXT:     },
 // CHECK-NEXT:     "end": {
 // CHECK-NEXT:      "col": 1,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 70
+// CHECK-NEXT:      "line": 71
 // CHECK-NEXT:     }
 // CHECK-NEXT:    },
 // CHECK-NEXT:    "inner": [
@@ -2566,12 +2683,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:       "begin": {
 // CHECK-NEXT:        "col": 3,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 68
+// CHECK-NEXT:        "line": 69
 // CHECK-NEXT:       },
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 5,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 69
+// CHECK-NEXT:        "line": 70
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "hasInit": true,
@@ -2583,12 +2700,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 11,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 68
+// CHECK-NEXT:          "line": 69
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 16,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 68
+// CHECK-NEXT:          "line": 69
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -2598,18 +2715,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 15,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 68
+// CHECK-NEXT:           "line": 69
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 11,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 68
+// CHECK-NEXT:            "line": 69
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 15,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 68
+// CHECK-NEXT:            "line": 69
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "name": "a",
@@ -2626,12 +2743,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 18,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 68
+// CHECK-NEXT:          "line": 69
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 18,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 68
+// CHECK-NEXT:          "line": 69
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -2647,12 +2764,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 18,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 68
+// CHECK-NEXT:            "line": 69
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 18,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 68
+// CHECK-NEXT:            "line": 69
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -2677,12 +2794,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 69
+// CHECK-NEXT:          "line": 70
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 69
+// CHECK-NEXT:          "line": 70
 // CHECK-NEXT:         }
 // CHECK-NEXT:        }
 // CHECK-NEXT:       }
@@ -2698,18 +2815,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:  "loc": {
 // CHECK-NEXT:   "col": 6,
 // CHECK-NEXT:   "file": "{{.*}}",
-// CHECK-NEXT:   "line": 72
+// CHECK-NEXT:   "line": 73
 // CHECK-NEXT:  },
 // CHECK-NEXT:  "range": {
 // CHECK-NEXT:   "begin": {
 // CHECK-NEXT:    "col": 1,
 // CHECK-NEXT:    "file": "{{.*}}",
-// CHECK-NEXT:    "line": 72
+// CHECK-NEXT:    "line": 73
 // CHECK-NEXT:   },
 // CHECK-NEXT:   "end": {
 // CHECK-NEXT:    "col": 1,
 // CHECK-NEXT:    "file": "{{.*}}",
-// CHECK-NEXT:    "line": 83
+// CHECK-NEXT:    "line": 84
 // CHECK-NEXT:   }
 // CHECK-NEXT:  },
 // CHECK-NEXT:  "name": "TestIf",
@@ -2723,18 +2840,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:    "loc": {
 // CHECK-NEXT:     "col": 18,
 // CHECK-NEXT:     "file": "{{.*}}",
-// CHECK-NEXT:     "line": 72
+// CHECK-NEXT:     "line": 73
 // CHECK-NEXT:    },
 // CHECK-NEXT:    "range": {
 // CHECK-NEXT:     "begin": {
 // CHECK-NEXT:      "col": 13,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 72
+// CHECK-NEXT:      "line": 73
 // CHECK-NEXT:     },
 // CHECK-NEXT:     "end": {
 // CHECK-NEXT:      "col": 18,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 72
+// CHECK-NEXT:      "line": 73
 // CHECK-NEXT:     }
 // CHECK-NEXT:    },
 // CHECK-NEXT:    "isReferenced": true,
@@ -2750,12 +2867,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:     "begin": {
 // CHECK-NEXT:      "col": 21,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 72
+// CHECK-NEXT:      "line": 73
 // CHECK-NEXT:     },
 // CHECK-NEXT:     "end": {
 // CHECK-NEXT:      "col": 1,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 83
+// CHECK-NEXT:      "line": 84
 // CHECK-NEXT:     }
 // CHECK-NEXT:    },
 // CHECK-NEXT:    "inner": [
@@ -2766,12 +2883,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:       "begin": {
 // CHECK-NEXT:        "col": 3,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 73
+// CHECK-NEXT:        "line": 74
 // CHECK-NEXT:       },
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 5,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 74
+// CHECK-NEXT:        "line": 75
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "hasInit": true,
@@ -2783,12 +2900,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 7,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 73
+// CHECK-NEXT:          "line": 74
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 23,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 73
+// CHECK-NEXT:          "line": 74
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -2798,18 +2915,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 17,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 73
+// CHECK-NEXT:           "line": 74
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 7,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 73
+// CHECK-NEXT:            "line": 74
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 21,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 73
+// CHECK-NEXT:            "line": 74
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "isReferenced": true,
@@ -2826,12 +2943,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 21,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 73
+// CHECK-NEXT:              "line": 74
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 21,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 73
+// CHECK-NEXT:              "line": 74
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -2851,12 +2968,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 25,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 73
+// CHECK-NEXT:          "line": 74
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 25,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 73
+// CHECK-NEXT:          "line": 74
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -2872,12 +2989,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 25,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 73
+// CHECK-NEXT:            "line": 74
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 25,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 73
+// CHECK-NEXT:            "line": 74
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -2893,12 +3010,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 25,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 73
+// CHECK-NEXT:              "line": 74
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 25,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 73
+// CHECK-NEXT:              "line": 74
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -2926,12 +3043,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 74
+// CHECK-NEXT:          "line": 75
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 74
+// CHECK-NEXT:          "line": 75
 // CHECK-NEXT:         }
 // CHECK-NEXT:        }
 // CHECK-NEXT:       }
@@ -2944,12 +3061,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:       "begin": {
 // CHECK-NEXT:        "col": 3,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 76
+// CHECK-NEXT:        "line": 77
 // CHECK-NEXT:       },
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 5,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 77
+// CHECK-NEXT:        "line": 78
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "isConstexpr": true,
@@ -2961,12 +3078,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 17,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 76
+// CHECK-NEXT:          "line": 77
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 30,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 76
+// CHECK-NEXT:          "line": 77
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -2982,12 +3099,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 17,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 76
+// CHECK-NEXT:            "line": 77
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 30,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 76
+// CHECK-NEXT:            "line": 77
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -3003,12 +3120,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 17,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 76
+// CHECK-NEXT:              "line": 77
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 25,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 76
+// CHECK-NEXT:              "line": 77
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -3024,12 +3141,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 23,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 76
+// CHECK-NEXT:                "line": 77
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 25,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 76
+// CHECK-NEXT:                "line": 77
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -3044,12 +3161,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                 "begin": {
 // CHECK-NEXT:                  "col": 24,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 76
+// CHECK-NEXT:                  "line": 77
 // CHECK-NEXT:                 },
 // CHECK-NEXT:                 "end": {
 // CHECK-NEXT:                  "col": 24,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 76
+// CHECK-NEXT:                  "line": 77
 // CHECK-NEXT:                 }
 // CHECK-NEXT:                },
 // CHECK-NEXT:                "type": {
@@ -3077,12 +3194,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 30,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 76
+// CHECK-NEXT:              "line": 77
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 30,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 76
+// CHECK-NEXT:              "line": 77
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -3098,12 +3215,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 30,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 76
+// CHECK-NEXT:                "line": 77
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 30,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 76
+// CHECK-NEXT:                "line": 77
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -3125,12 +3242,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:          "line": 78
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:          "line": 78
 // CHECK-NEXT:         }
 // CHECK-NEXT:        }
 // CHECK-NEXT:       }
@@ -3143,12 +3260,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:       "begin": {
 // CHECK-NEXT:        "col": 3,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 79
+// CHECK-NEXT:        "line": 80
 // CHECK-NEXT:       },
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 5,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 82
+// CHECK-NEXT:        "line": 83
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "hasElse": true,
@@ -3161,12 +3278,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 17,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 79
+// CHECK-NEXT:          "line": 80
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 30,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 79
+// CHECK-NEXT:          "line": 80
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -3182,12 +3299,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 17,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 79
+// CHECK-NEXT:            "line": 80
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 30,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 79
+// CHECK-NEXT:            "line": 80
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -3203,12 +3320,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 17,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 79
+// CHECK-NEXT:              "line": 80
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 25,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 79
+// CHECK-NEXT:              "line": 80
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -3224,12 +3341,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 23,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 79
+// CHECK-NEXT:                "line": 80
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 25,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 79
+// CHECK-NEXT:                "line": 80
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -3244,12 +3361,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                 "begin": {
 // CHECK-NEXT:                  "col": 24,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 79
+// CHECK-NEXT:                  "line": 80
 // CHECK-NEXT:                 },
 // CHECK-NEXT:                 "end": {
 // CHECK-NEXT:                  "col": 24,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 79
+// CHECK-NEXT:                  "line": 80
 // CHECK-NEXT:                 }
 // CHECK-NEXT:                },
 // CHECK-NEXT:                "type": {
@@ -3277,12 +3394,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 30,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 79
+// CHECK-NEXT:              "line": 80
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 30,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 79
+// CHECK-NEXT:              "line": 80
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -3298,12 +3415,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 30,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 79
+// CHECK-NEXT:                "line": 80
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 30,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 79
+// CHECK-NEXT:                "line": 80
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -3325,12 +3442,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 80
+// CHECK-NEXT:          "line": 81
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 80
+// CHECK-NEXT:          "line": 81
 // CHECK-NEXT:         }
 // CHECK-NEXT:        }
 // CHECK-NEXT:       },
@@ -3341,12 +3458,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:          "line": 83
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:          "line": 83
 // CHECK-NEXT:         }
 // CHECK-NEXT:        }
 // CHECK-NEXT:       }
@@ -3362,18 +3479,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:  "loc": {
 // CHECK-NEXT:   "col": 6,
 // CHECK-NEXT:   "file": "{{.*}}",
-// CHECK-NEXT:   "line": 90
+// CHECK-NEXT:   "line": 91
 // CHECK-NEXT:  },
 // CHECK-NEXT:  "range": {
 // CHECK-NEXT:   "begin": {
 // CHECK-NEXT:    "col": 1,
 // CHECK-NEXT:    "file": "{{.*}}",
-// CHECK-NEXT:    "line": 90
+// CHECK-NEXT:    "line": 91
 // CHECK-NEXT:   },
 // CHECK-NEXT:   "end": {
 // CHECK-NEXT:    "col": 1,
 // CHECK-NEXT:    "file": "{{.*}}",
-// CHECK-NEXT:    "line": 104
+// CHECK-NEXT:    "line": 105
 // CHECK-NEXT:   }
 // CHECK-NEXT:  },
 // CHECK-NEXT:  "name": "TestIteration",
@@ -3388,12 +3505,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:     "begin": {
 // CHECK-NEXT:      "col": 22,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 90
+// CHECK-NEXT:      "line": 91
 // CHECK-NEXT:     },
 // CHECK-NEXT:     "end": {
 // CHECK-NEXT:      "col": 1,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 104
+// CHECK-NEXT:      "line": 105
 // CHECK-NEXT:     }
 // CHECK-NEXT:    },
 // CHECK-NEXT:    "inner": [
@@ -3404,12 +3521,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:       "begin": {
 // CHECK-NEXT:        "col": 3,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 91
+// CHECK-NEXT:        "line": 92
 // CHECK-NEXT:       },
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 5,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 92
+// CHECK-NEXT:        "line": 93
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "inner": [
@@ -3420,12 +3537,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 8,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:          "line": 92
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 17,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:          "line": 92
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -3435,18 +3552,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 12,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 91
+// CHECK-NEXT:           "line": 92
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 8,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:            "line": 92
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 16,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:            "line": 92
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "isUsed": true,
@@ -3463,12 +3580,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 16,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 91
+// CHECK-NEXT:              "line": 92
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 16,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 91
+// CHECK-NEXT:              "line": 92
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -3488,12 +3605,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 19,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:          "line": 92
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 27,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:          "line": 92
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -3503,18 +3620,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 23,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 91
+// CHECK-NEXT:           "line": 92
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 19,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:            "line": 92
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 27,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:            "line": 92
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "isUsed": true,
@@ -3531,12 +3648,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 27,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 91
+// CHECK-NEXT:              "line": 92
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 27,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 91
+// CHECK-NEXT:              "line": 92
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -3552,12 +3669,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 27,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 91
+// CHECK-NEXT:                "line": 92
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 27,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 91
+// CHECK-NEXT:                "line": 92
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -3586,12 +3703,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 23,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:          "line": 92
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 23,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:          "line": 92
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -3607,12 +3724,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 23,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:            "line": 92
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 23,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:            "line": 92
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -3628,12 +3745,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 23,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 91
+// CHECK-NEXT:              "line": 92
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 23,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 91
+// CHECK-NEXT:              "line": 92
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -3660,12 +3777,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 30,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:          "line": 92
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 32,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:          "line": 92
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -3682,12 +3799,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 32,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:            "line": 92
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 32,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:            "line": 92
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -3712,12 +3829,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 92
+// CHECK-NEXT:          "line": 93
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 92
+// CHECK-NEXT:          "line": 93
 // CHECK-NEXT:         }
 // CHECK-NEXT:        }
 // CHECK-NEXT:       }
@@ -3730,12 +3847,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:       "begin": {
 // CHECK-NEXT:        "col": 3,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 94
+// CHECK-NEXT:        "line": 95
 // CHECK-NEXT:       },
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 15,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 94
+// CHECK-NEXT:        "line": 95
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "inner": [
@@ -3745,18 +3862,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:        "loc": {
 // CHECK-NEXT:         "col": 7,
 // CHECK-NEXT:         "file": "{{.*}}",
-// CHECK-NEXT:         "line": 94
+// CHECK-NEXT:         "line": 95
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "range": {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 3,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 94
+// CHECK-NEXT:          "line": 95
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 94
+// CHECK-NEXT:          "line": 95
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "isUsed": true,
@@ -3774,12 +3891,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:       "begin": {
 // CHECK-NEXT:        "col": 3,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 95
+// CHECK-NEXT:        "line": 96
 // CHECK-NEXT:       },
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 5,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 96
+// CHECK-NEXT:        "line": 97
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "inner": [
@@ -3791,12 +3908,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 16,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:          "line": 96
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 16,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:          "line": 96
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -3806,18 +3923,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 16,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 95
+// CHECK-NEXT:           "line": 96
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 16,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 16,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "isImplicit": true,
@@ -3835,12 +3952,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 16,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:              "line": 96
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 16,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:              "line": 96
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -3867,12 +3984,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:          "line": 96
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:          "line": 96
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -3882,18 +3999,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 14,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 95
+// CHECK-NEXT:           "line": 96
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "isImplicit": true,
@@ -3912,12 +4029,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:              "line": 96
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:              "line": 96
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -3933,12 +4050,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:                "line": 96
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:                "line": 96
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -3967,12 +4084,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:          "line": 96
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:          "line": 96
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -3982,18 +4099,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 14,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 95
+// CHECK-NEXT:           "line": 96
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 16,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "isImplicit": true,
@@ -4012,12 +4129,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:              "line": 96
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 16,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:              "line": 96
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -4033,12 +4150,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:                "line": 96
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:                "line": 96
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -4054,12 +4171,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                 "begin": {
 // CHECK-NEXT:                  "col": 14,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 95
+// CHECK-NEXT:                  "line": 96
 // CHECK-NEXT:                 },
 // CHECK-NEXT:                 "end": {
 // CHECK-NEXT:                  "col": 14,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 95
+// CHECK-NEXT:                  "line": 96
 // CHECK-NEXT:                 }
 // CHECK-NEXT:                },
 // CHECK-NEXT:                "type": {
@@ -4084,12 +4201,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 16,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:                "line": 96
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 16,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:                "line": 96
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -4111,12 +4228,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:          "line": 96
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:          "line": 96
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -4132,12 +4249,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -4154,12 +4271,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:              "line": 96
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:              "line": 96
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -4186,12 +4303,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -4208,12 +4325,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:              "line": 96
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:              "line": 96
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -4242,12 +4359,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:          "line": 96
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:          "line": 96
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -4265,12 +4382,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -4297,12 +4414,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 8,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:          "line": 96
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 20,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:          "line": 96
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -4312,18 +4429,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 12,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 95
+// CHECK-NEXT:           "line": 96
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 8,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:            "line": 96
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "name": "v",
@@ -4339,12 +4456,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:              "line": 96
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:              "line": 96
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -4360,12 +4477,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:                "line": 96
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:                "line": 96
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -4383,12 +4500,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                 "begin": {
 // CHECK-NEXT:                  "col": 14,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 95
+// CHECK-NEXT:                  "line": 96
 // CHECK-NEXT:                 },
 // CHECK-NEXT:                 "end": {
 // CHECK-NEXT:                  "col": 14,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 95
+// CHECK-NEXT:                  "line": 96
 // CHECK-NEXT:                 }
 // CHECK-NEXT:                },
 // CHECK-NEXT:                "type": {
@@ -4405,12 +4522,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                   "begin": {
 // CHECK-NEXT:                    "col": 14,
 // CHECK-NEXT:                    "file": "{{.*}}",
-// CHECK-NEXT:                    "line": 95
+// CHECK-NEXT:                    "line": 96
 // CHECK-NEXT:                   },
 // CHECK-NEXT:                   "end": {
 // CHECK-NEXT:                    "col": 14,
 // CHECK-NEXT:                    "file": "{{.*}}",
-// CHECK-NEXT:                    "line": 95
+// CHECK-NEXT:                    "line": 96
 // CHECK-NEXT:                   }
 // CHECK-NEXT:                  },
 // CHECK-NEXT:                  "type": {
@@ -4445,12 +4562,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 96
+// CHECK-NEXT:          "line": 97
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 96
+// CHECK-NEXT:          "line": 97
 // CHECK-NEXT:         }
 // CHECK-NEXT:        }
 // CHECK-NEXT:       }
@@ -4463,12 +4580,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:       "begin": {
 // CHECK-NEXT:        "col": 3,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 98
+// CHECK-NEXT:        "line": 99
 // CHECK-NEXT:       },
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 14,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 98
+// CHECK-NEXT:        "line": 99
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "inner": [
@@ -4478,18 +4595,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:        "loc": {
 // CHECK-NEXT:         "col": 13,
 // CHECK-NEXT:         "file": "{{.*}}",
-// CHECK-NEXT:         "line": 98
+// CHECK-NEXT:         "line": 99
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "range": {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 3,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 98
+// CHECK-NEXT:          "line": 99
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 13,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 98
+// CHECK-NEXT:          "line": 99
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "isUsed": true,
@@ -4506,18 +4623,23 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 13,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 98
+// CHECK-NEXT:            "line": 99
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 13,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 98
+// CHECK-NEXT:            "line": 99
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
 // CHECK-NEXT:           "qualType": "Container"
 // CHECK-NEXT:          },
-// CHECK-NEXT:          "valueCategory": "rvalue"
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "ctorType": {
+// CHECK-NEXT:           "qualType": "void () noexcept"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "hadMultipleCandidates": true,
+// CHECK-NEXT:          "constructionKind": "complete"
 // CHECK-NEXT:         }
 // CHECK-NEXT:        ]
 // CHECK-NEXT:       }
@@ -4530,12 +4652,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:       "begin": {
 // CHECK-NEXT:        "col": 3,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 99
+// CHECK-NEXT:        "line": 100
 // CHECK-NEXT:       },
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 5,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 100
+// CHECK-NEXT:        "line": 101
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "inner": [
@@ -4547,12 +4669,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 16,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:          "line": 100
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 16,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:          "line": 100
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -4562,18 +4684,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 16,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 99
+// CHECK-NEXT:           "line": 100
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 16,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 16,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "isImplicit": true,
@@ -4591,12 +4713,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 16,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:              "line": 100
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 16,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:              "line": 100
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -4623,12 +4745,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:          "line": 100
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:          "line": 100
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -4638,18 +4760,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 14,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 99
+// CHECK-NEXT:           "line": 100
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "isImplicit": true,
@@ -4668,12 +4790,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:              "line": 100
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:              "line": 100
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -4688,12 +4810,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 99
+// CHECK-NEXT:                "line": 100
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 99
+// CHECK-NEXT:                "line": 100
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -4711,12 +4833,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                 "begin": {
 // CHECK-NEXT:                  "col": 14,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 99
+// CHECK-NEXT:                  "line": 100
 // CHECK-NEXT:                 },
 // CHECK-NEXT:                 "end": {
 // CHECK-NEXT:                  "col": 14,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 99
+// CHECK-NEXT:                  "line": 100
 // CHECK-NEXT:                 }
 // CHECK-NEXT:                },
 // CHECK-NEXT:                "type": {
@@ -4732,12 +4854,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                   "begin": {
 // CHECK-NEXT:                    "col": 14,
 // CHECK-NEXT:                    "file": "{{.*}}",
-// CHECK-NEXT:                    "line": 99
+// CHECK-NEXT:                    "line": 100
 // CHECK-NEXT:                   },
 // CHECK-NEXT:                   "end": {
 // CHECK-NEXT:                    "col": 14,
 // CHECK-NEXT:                    "file": "{{.*}}",
-// CHECK-NEXT:                    "line": 99
+// CHECK-NEXT:                    "line": 100
 // CHECK-NEXT:                   }
 // CHECK-NEXT:                  },
 // CHECK-NEXT:                  "type": {
@@ -4770,12 +4892,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:          "line": 100
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:          "line": 100
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -4785,18 +4907,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 14,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 99
+// CHECK-NEXT:           "line": 100
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "isImplicit": true,
@@ -4815,12 +4937,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:              "line": 100
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:              "line": 100
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -4835,12 +4957,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 99
+// CHECK-NEXT:                "line": 100
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 99
+// CHECK-NEXT:                "line": 100
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -4858,12 +4980,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                 "begin": {
 // CHECK-NEXT:                  "col": 14,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 99
+// CHECK-NEXT:                  "line": 100
 // CHECK-NEXT:                 },
 // CHECK-NEXT:                 "end": {
 // CHECK-NEXT:                  "col": 14,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 99
+// CHECK-NEXT:                  "line": 100
 // CHECK-NEXT:                 }
 // CHECK-NEXT:                },
 // CHECK-NEXT:                "type": {
@@ -4879,12 +5001,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                   "begin": {
 // CHECK-NEXT:                    "col": 14,
 // CHECK-NEXT:                    "file": "{{.*}}",
-// CHECK-NEXT:                    "line": 99
+// CHECK-NEXT:                    "line": 100
 // CHECK-NEXT:                   },
 // CHECK-NEXT:                   "end": {
 // CHECK-NEXT:                    "col": 14,
 // CHECK-NEXT:                    "file": "{{.*}}",
-// CHECK-NEXT:                    "line": 99
+// CHECK-NEXT:                    "line": 100
 // CHECK-NEXT:                   }
 // CHECK-NEXT:                  },
 // CHECK-NEXT:                  "type": {
@@ -4917,12 +5039,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:          "line": 100
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:          "line": 100
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -4938,12 +5060,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -4960,12 +5082,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:              "line": 100
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:              "line": 100
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -4992,12 +5114,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -5014,12 +5136,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:              "line": 100
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:              "line": 100
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -5048,12 +5170,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:          "line": 100
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 14,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:          "line": 100
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -5071,12 +5193,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -5103,12 +5225,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 8,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:          "line": 100
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 17,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:          "line": 100
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -5118,18 +5240,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 12,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 99
+// CHECK-NEXT:           "line": 100
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 8,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 14,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:            "line": 100
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "name": "v",
@@ -5145,12 +5267,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:              "line": 100
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 14,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:              "line": 100
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -5166,12 +5288,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 99
+// CHECK-NEXT:                "line": 100
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 14,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 99
+// CHECK-NEXT:                "line": 100
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -5189,12 +5311,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                 "begin": {
 // CHECK-NEXT:                  "col": 14,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 99
+// CHECK-NEXT:                  "line": 100
 // CHECK-NEXT:                 },
 // CHECK-NEXT:                 "end": {
 // CHECK-NEXT:                  "col": 14,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 99
+// CHECK-NEXT:                  "line": 100
 // CHECK-NEXT:                 }
 // CHECK-NEXT:                },
 // CHECK-NEXT:                "type": {
@@ -5211,12 +5333,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                   "begin": {
 // CHECK-NEXT:                    "col": 14,
 // CHECK-NEXT:                    "file": "{{.*}}",
-// CHECK-NEXT:                    "line": 99
+// CHECK-NEXT:                    "line": 100
 // CHECK-NEXT:                   },
 // CHECK-NEXT:                   "end": {
 // CHECK-NEXT:                    "col": 14,
 // CHECK-NEXT:                    "file": "{{.*}}",
-// CHECK-NEXT:                    "line": 99
+// CHECK-NEXT:                    "line": 100
 // CHECK-NEXT:                   }
 // CHECK-NEXT:                  },
 // CHECK-NEXT:                  "type": {
@@ -5251,12 +5373,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 100
+// CHECK-NEXT:          "line": 101
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 100
+// CHECK-NEXT:          "line": 101
 // CHECK-NEXT:         }
 // CHECK-NEXT:        }
 // CHECK-NEXT:       }
@@ -5269,12 +5391,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:       "begin": {
 // CHECK-NEXT:        "col": 3,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 102
+// CHECK-NEXT:        "line": 103
 // CHECK-NEXT:       },
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 5,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 103
+// CHECK-NEXT:        "line": 104
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "inner": [
@@ -5285,12 +5407,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 8,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 13,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -5300,18 +5422,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 12,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 102
+// CHECK-NEXT:           "line": 103
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 8,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 12,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "name": "a",
@@ -5328,12 +5450,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 23,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 23,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -5343,18 +5465,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 23,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 102
+// CHECK-NEXT:           "line": 103
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 23,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 23,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "isImplicit": true,
@@ -5372,12 +5494,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 23,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:              "line": 103
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 23,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:              "line": 103
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -5404,12 +5526,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 21,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 21,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -5419,18 +5541,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 21,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 102
+// CHECK-NEXT:           "line": 103
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 21,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 21,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "isImplicit": true,
@@ -5449,12 +5571,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 21,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:              "line": 103
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 21,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:              "line": 103
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -5470,12 +5592,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 21,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:                "line": 103
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 21,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:                "line": 103
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -5504,12 +5626,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 21,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 21,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -5519,18 +5641,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 21,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 102
+// CHECK-NEXT:           "line": 103
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 21,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 23,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "isImplicit": true,
@@ -5549,12 +5671,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 21,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:              "line": 103
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 23,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:              "line": 103
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -5570,12 +5692,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 21,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:                "line": 103
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 21,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:                "line": 103
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -5591,12 +5713,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                 "begin": {
 // CHECK-NEXT:                  "col": 21,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 102
+// CHECK-NEXT:                  "line": 103
 // CHECK-NEXT:                 },
 // CHECK-NEXT:                 "end": {
 // CHECK-NEXT:                  "col": 21,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 102
+// CHECK-NEXT:                  "line": 103
 // CHECK-NEXT:                 }
 // CHECK-NEXT:                },
 // CHECK-NEXT:                "type": {
@@ -5621,12 +5743,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 23,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:                "line": 103
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 23,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:                "line": 103
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -5648,12 +5770,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 21,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 21,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -5669,12 +5791,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 21,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 21,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -5691,12 +5813,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 21,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:              "line": 103
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 21,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:              "line": 103
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -5723,12 +5845,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 21,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 21,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -5745,12 +5867,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 21,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:              "line": 103
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 21,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:              "line": 103
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -5779,12 +5901,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 21,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 21,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -5802,12 +5924,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 21,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 21,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -5834,12 +5956,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 15,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 27,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:          "line": 103
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "inner": [
@@ -5849,18 +5971,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:          "loc": {
 // CHECK-NEXT:           "col": 19,
 // CHECK-NEXT:           "file": "{{.*}}",
-// CHECK-NEXT:           "line": 102
+// CHECK-NEXT:           "line": 103
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "range": {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 15,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 21,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:            "line": 103
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "name": "v",
@@ -5876,12 +5998,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 21,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:              "line": 103
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 21,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:              "line": 103
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -5897,12 +6019,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:               "begin": {
 // CHECK-NEXT:                "col": 21,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:                "line": 103
 // CHECK-NEXT:               },
 // CHECK-NEXT:               "end": {
 // CHECK-NEXT:                "col": 21,
 // CHECK-NEXT:                "file": "{{.*}}",
-// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:                "line": 103
 // CHECK-NEXT:               }
 // CHECK-NEXT:              },
 // CHECK-NEXT:              "type": {
@@ -5920,12 +6042,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                 "begin": {
 // CHECK-NEXT:                  "col": 21,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 102
+// CHECK-NEXT:                  "line": 103
 // CHECK-NEXT:                 },
 // CHECK-NEXT:                 "end": {
 // CHECK-NEXT:                  "col": 21,
 // CHECK-NEXT:                  "file": "{{.*}}",
-// CHECK-NEXT:                  "line": 102
+// CHECK-NEXT:                  "line": 103
 // CHECK-NEXT:                 }
 // CHECK-NEXT:                },
 // CHECK-NEXT:                "type": {
@@ -5942,12 +6064,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:                   "begin": {
 // CHECK-NEXT:                    "col": 21,
 // CHECK-NEXT:                    "file": "{{.*}}",
-// CHECK-NEXT:                    "line": 102
+// CHECK-NEXT:                    "line": 103
 // CHECK-NEXT:                   },
 // CHECK-NEXT:                   "end": {
 // CHECK-NEXT:                    "col": 21,
 // CHECK-NEXT:                    "file": "{{.*}}",
-// CHECK-NEXT:                    "line": 102
+// CHECK-NEXT:                    "line": 103
 // CHECK-NEXT:                   }
 // CHECK-NEXT:                  },
 // CHECK-NEXT:                  "type": {
@@ -5982,12 +6104,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 103
+// CHECK-NEXT:          "line": 104
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 5,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 103
+// CHECK-NEXT:          "line": 104
 // CHECK-NEXT:         }
 // CHECK-NEXT:        }
 // CHECK-NEXT:       }
@@ -6003,18 +6125,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:  "loc": {
 // CHECK-NEXT:   "col": 6,
 // CHECK-NEXT:   "file": "{{.*}}",
-// CHECK-NEXT:   "line": 107
+// CHECK-NEXT:   "line": 108
 // CHECK-NEXT:  },
 // CHECK-NEXT:  "range": {
 // CHECK-NEXT:   "begin": {
 // CHECK-NEXT:    "col": 1,
 // CHECK-NEXT:    "file": "{{.*}}",
-// CHECK-NEXT:    "line": 106
+// CHECK-NEXT:    "line": 107
 // CHECK-NEXT:   },
 // CHECK-NEXT:   "end": {
 // CHECK-NEXT:    "col": 1,
 // CHECK-NEXT:    "file": "{{.*}}",
-// CHECK-NEXT:    "line": 110
+// CHECK-NEXT:    "line": 111
 // CHECK-NEXT:   }
 // CHECK-NEXT:  },
 // CHECK-NEXT:  "name": "TestDependentGenericSelectionExpr",
@@ -6025,18 +6147,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:    "loc": {
 // CHECK-NEXT:     "col": 20,
 // CHECK-NEXT:     "file": "{{.*}}",
-// CHECK-NEXT:     "line": 106
+// CHECK-NEXT:     "line": 107
 // CHECK-NEXT:    },
 // CHECK-NEXT:    "range": {
 // CHECK-NEXT:     "begin": {
 // CHECK-NEXT:      "col": 11,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 106
+// CHECK-NEXT:      "line": 107
 // CHECK-NEXT:     },
 // CHECK-NEXT:     "end": {
 // CHECK-NEXT:      "col": 20,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 106
+// CHECK-NEXT:      "line": 107
 // CHECK-NEXT:     }
 // CHECK-NEXT:    },
 // CHECK-NEXT:    "isReferenced": true,
@@ -6051,18 +6173,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:    "loc": {
 // CHECK-NEXT:     "col": 6,
 // CHECK-NEXT:     "file": "{{.*}}",
-// CHECK-NEXT:     "line": 107
+// CHECK-NEXT:     "line": 108
 // CHECK-NEXT:    },
 // CHECK-NEXT:    "range": {
 // CHECK-NEXT:     "begin": {
 // CHECK-NEXT:      "col": 1,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 107
+// CHECK-NEXT:      "line": 108
 // CHECK-NEXT:     },
 // CHECK-NEXT:     "end": {
 // CHECK-NEXT:      "col": 1,
 // CHECK-NEXT:      "file": "{{.*}}",
-// CHECK-NEXT:      "line": 110
+// CHECK-NEXT:      "line": 111
 // CHECK-NEXT:     }
 // CHECK-NEXT:    },
 // CHECK-NEXT:    "name": "TestDependentGenericSelectionExpr",
@@ -6076,18 +6198,18 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:      "loc": {
 // CHECK-NEXT:       "col": 43,
 // CHECK-NEXT:       "file": "{{.*}}",
-// CHECK-NEXT:       "line": 107
+// CHECK-NEXT:       "line": 108
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "range": {
 // CHECK-NEXT:       "begin": {
 // CHECK-NEXT:        "col": 40,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 107
+// CHECK-NEXT:        "line": 108
 // CHECK-NEXT:       },
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 43,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 107
+// CHECK-NEXT:        "line": 108
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "isReferenced": true,
@@ -6103,12 +6225,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:       "begin": {
 // CHECK-NEXT:        "col": 46,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 107
+// CHECK-NEXT:        "line": 108
 // CHECK-NEXT:       },
 // CHECK-NEXT:       "end": {
 // CHECK-NEXT:        "col": 1,
 // CHECK-NEXT:        "file": "{{.*}}",
-// CHECK-NEXT:        "line": 110
+// CHECK-NEXT:        "line": 111
 // CHECK-NEXT:       }
 // CHECK-NEXT:      },
 // CHECK-NEXT:      "inner": [
@@ -6119,12 +6241,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 3,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 108
+// CHECK-NEXT:          "line": 109
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 35,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 108
+// CHECK-NEXT:          "line": 109
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -6140,12 +6262,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 12,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 108
+// CHECK-NEXT:            "line": 109
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 12,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 108
+// CHECK-NEXT:            "line": 109
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -6188,12 +6310,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 21,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 108
+// CHECK-NEXT:              "line": 109
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 21,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 108
+// CHECK-NEXT:              "line": 109
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -6214,12 +6336,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 34,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 108
+// CHECK-NEXT:              "line": 109
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 34,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 108
+// CHECK-NEXT:              "line": 109
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {
@@ -6239,12 +6361,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:         "begin": {
 // CHECK-NEXT:          "col": 3,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 109
+// CHECK-NEXT:          "line": 110
 // CHECK-NEXT:         },
 // CHECK-NEXT:         "end": {
 // CHECK-NEXT:          "col": 26,
 // CHECK-NEXT:          "file": "{{.*}}",
-// CHECK-NEXT:          "line": 109
+// CHECK-NEXT:          "line": 110
 // CHECK-NEXT:         }
 // CHECK-NEXT:        },
 // CHECK-NEXT:        "type": {
@@ -6260,12 +6382,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:           "begin": {
 // CHECK-NEXT:            "col": 12,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 109
+// CHECK-NEXT:            "line": 110
 // CHECK-NEXT:           },
 // CHECK-NEXT:           "end": {
 // CHECK-NEXT:            "col": 12,
 // CHECK-NEXT:            "file": "{{.*}}",
-// CHECK-NEXT:            "line": 109
+// CHECK-NEXT:            "line": 110
 // CHECK-NEXT:           }
 // CHECK-NEXT:          },
 // CHECK-NEXT:          "type": {
@@ -6301,12 +6423,12 @@ void TestDependentGenericSelectionExpr(Ty T) {
 // CHECK-NEXT:             "begin": {
 // CHECK-NEXT:              "col": 25,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 109
+// CHECK-NEXT:              "line": 110
 // CHECK-NEXT:             },
 // CHECK-NEXT:             "end": {
 // CHECK-NEXT:              "col": 25,
 // CHECK-NEXT:              "file": "{{.*}}",
-// CHECK-NEXT:              "line": 109
+// CHECK-NEXT:              "line": 110
 // CHECK-NEXT:             }
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "type": {