diff --git a/src/services/outliningElementsCollector.ts b/src/services/outliningElementsCollector.ts index ab8cfb3f6c3..dd71b48c49c 100644 --- a/src/services/outliningElementsCollector.ts +++ b/src/services/outliningElementsCollector.ts @@ -200,6 +200,9 @@ namespace ts.OutliningElementsCollector { case SyntaxKind.EnumDeclaration: case SyntaxKind.CaseBlock: return spanForNode(n); + case SyntaxKind.CaseClause: + case SyntaxKind.DefaultClause: + return spanForNodeArray((n as CaseClause | DefaultClause).statements); case SyntaxKind.ObjectLiteralExpression: return spanForObjectOrArrayLiteral(n); case SyntaxKind.ArrayLiteralExpression: @@ -256,6 +259,10 @@ namespace ts.OutliningElementsCollector { const closeToken = findChildOfKind(n, close, sourceFile); return openToken && closeToken && spanBetweenTokens(openToken, closeToken, hintSpanNode, sourceFile, autoCollapse, useFullStart); } + + function spanForNodeArray(nodeArray: NodeArray): OutliningSpan | undefined { + return nodeArray.length ? createOutliningSpan(createTextSpanFromRange(nodeArray), OutliningSpanKind.Code) : undefined; + } } function functionSpan(node: FunctionLike, body: Block, sourceFile: SourceFile): OutliningSpan | undefined { diff --git a/tests/cases/fourslash/getOutliningSpans.ts b/tests/cases/fourslash/getOutliningSpans.ts index 01a4b5cf87e..bec0f4f0d3b 100644 --- a/tests/cases/fourslash/getOutliningSpans.ts +++ b/tests/cases/fourslash/getOutliningSpans.ts @@ -32,7 +32,7 @@ //// }|] //// }|]) ////switch(1)[| { -//// case 1: break; +//// case 1:[| break;|] ////}|] //// ////var array =[| [ diff --git a/tests/cases/fourslash/outliningSpansSwitchCases.ts b/tests/cases/fourslash/outliningSpansSwitchCases.ts new file mode 100644 index 00000000000..6d66222bec1 --- /dev/null +++ b/tests/cases/fourslash/outliningSpansSwitchCases.ts @@ -0,0 +1,37 @@ +/// + +////switch (undefined)[| { +//// case 0:[| +//// console.log(1) +//// console.log(2) +//// break; +//// console.log(3);|] +//// case 1:[| +//// break;|] +//// case 2:[| +//// break; +//// console.log(3);|] +//// case 3:[| +//// console.log(4);|] +//// +//// case 4: +//// case 5: +//// case 6:[| +//// +//// +//// console.log(5);|] +//// +//// case 7:[| console.log(6);|] +//// +//// case 8:[| [|{ +//// console.log(8); +//// break; +//// }|] +//// console.log(8);|] +//// +//// default:[| +//// console.log(7); +//// console.log(8);|] +////}|] + +verify.outliningSpansInCurrentFile(test.ranges(), "code"); diff --git a/tests/cases/fourslash/shims-pp/getOutliningSpans.ts b/tests/cases/fourslash/shims-pp/getOutliningSpans.ts index f4d1eb33e23..3050912101e 100644 --- a/tests/cases/fourslash/shims-pp/getOutliningSpans.ts +++ b/tests/cases/fourslash/shims-pp/getOutliningSpans.ts @@ -1,4 +1,4 @@ -/// +/// ////// interface ////interface IFoo[| { @@ -26,7 +26,7 @@ //// }|] ////}|] ////switch(1)[| { -//// case 1: break; +//// case 1:[| break;|] ////}|] //// ////var array =[| [ diff --git a/tests/cases/fourslash/shims/getOutliningSpans.ts b/tests/cases/fourslash/shims/getOutliningSpans.ts index f4d1eb33e23..d6c354c3348 100644 --- a/tests/cases/fourslash/shims/getOutliningSpans.ts +++ b/tests/cases/fourslash/shims/getOutliningSpans.ts @@ -26,7 +26,7 @@ //// }|] ////}|] ////switch(1)[| { -//// case 1: break; +//// case 1:[| break;|] ////}|] //// ////var array =[| [