Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/services/outliningElementsCollector.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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<Node>): OutliningSpan | undefined {
return nodeArray.length ? createOutliningSpan(createTextSpanFromRange(nodeArray), OutliningSpanKind.Code) : undefined;
}
}

function functionSpan(node: FunctionLike, body: Block, sourceFile: SourceFile): OutliningSpan | undefined {
Expand Down
37 changes: 37 additions & 0 deletions tests/cases/fourslash/outliningSpansSwitchCases.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/// <reference path="fourslash.ts" />

////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");