Skip to content

Commit ebddceb

Browse files
author
Andy Hanson
committed
Test with trivia and fix indentation with dedented label
1 parent 23d7763 commit ebddceb

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

src/services/codefixes/fixUnusedLabel.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ namespace ts.codefix {
1414

1515
function doChange(changes: textChanges.ChangeTracker, sourceFile: SourceFile, start: number): void {
1616
const token = getTokenAtPosition(sourceFile, start, /*includeJsDocComment*/ false);
17-
const statement = cast(token.parent, isLabeledStatement).statement;
18-
changes.deleteRange(sourceFile, { pos: token.getStart(sourceFile), end: statement.getStart(sourceFile) });
17+
const labeledStatement = cast(token.parent, isLabeledStatement);
18+
const pos = token.getStart(sourceFile);
19+
const statementPos = labeledStatement.statement.getStart(sourceFile);
20+
// If label is on a separate line, just delete the rest of that line, but not the indentation of the labeled statement.
21+
const end = positionsAreOnSameLine(pos, statementPos, sourceFile) ? statementPos
22+
: skipTrivia(sourceFile.text, findChildOfKind(labeledStatement, SyntaxKind.ColonToken, sourceFile)!.end, /*stopAfterLineBreak*/ true);
23+
changes.deleteRange(sourceFile, { pos, end });
1924
}
2025
}

tests/cases/fourslash/codeFixUnusedLabel.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
// @noUnusedLocals: true
44

5-
////label: while (1) {}
5+
/////* a */label/* b */:/* c */while (1) {}
66

77
verify.codeFix({
88
description: "Remove unused label",
99
newFileContent:
10-
`while (1) {}`,
10+
`/* a */while (1) {}`,
1111
});

tests/cases/fourslash/codeFixUnusedLabel_all.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,19 @@
33
// @noUnusedLocals: true
44

55
////label1: while (1) {}
6-
////label2: while (1) {}
6+
////
7+
////function f() {
8+
////label2:
9+
//// while (1) {}
10+
////}
711

812
verify.codeFixAll({
913
fixId: "fixUnusedLabel",
1014
fixAllDescription: "Remove all unused labels",
1115
newFileContent:
1216
`while (1) {}
13-
while (1) {}`,
17+
18+
function f() {
19+
while (1) {}
20+
}`,
1421
});

0 commit comments

Comments
 (0)