Fixed outlining spans for chained method calls. (#35860)

This commit is contained in:
Titian Cernicova-Dragomir authored and Daniel Rosenwasser committed 2020-01-02 15:44:22 -08:00
1 parent 4942fd2b84
commit 82b0547281
2 files changed
+124 -1

No files matched your search

+8 -1
View File
@@ -45,7 +45,14 @@ namespace ts.OutliningElementsCollector {
if (span) out.push(span);
depthRemaining--;
if (isIfStatement(n) && n.elseStatement && isIfStatement(n.elseStatement)) {
if (isCallExpression(n)) {
depthRemaining++;
visitNonImportNode(n.expression);
depthRemaining--;
n.arguments.forEach(visitNonImportNode);
n.typeArguments?.forEach(visitNonImportNode);
}
else if (isIfStatement(n) && n.elseStatement && isIfStatement(n.elseStatement)) {
// Consider an 'else if' to be on the same depth as the 'if'.
visitNonImportNode(n.expression);
visitNonImportNode(n.thenStatement);
@@ -0,0 +1,116 @@
/// <reference path="fourslash.ts"/>
// Tests that each 'else if' does not count towards a higher nesting depth.
////declare var router: any;
////router
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
//// .get("/", async(ctx) =>[|{
//// ctx.body = "base";
//// }|])
//// .post("/a", async(ctx) =>[|{
//// //a
//// }|])
verify.outliningSpansInCurrentFile(test.ranges());