Skip to content

Commit 23d7763

Browse files
author
Andy Hanson
committed
Add code fix to remove unused label
1 parent fb49fbb commit 23d7763

File tree

8 files changed

+57
-0
lines changed

8 files changed

+57
-0
lines changed

src/compiler/diagnosticMessages.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4249,5 +4249,13 @@
42494249
"Move to a new file": {
42504250
"category": "Message",
42514251
"code": 95049
4252+
},
4253+
"Remove unused label": {
4254+
"category": "Message",
4255+
"code": 95050
4256+
},
4257+
"Remove all unused labels": {
4258+
"category": "Message",
4259+
"code": 95051
42524260
}
42534261
}

src/harness/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
"../services/codefixes/fixExtendsInterfaceBecomesImplements.ts",
106106
"../services/codefixes/fixForgottenThisPropertyAccess.ts",
107107
"../services/codefixes/fixUnusedIdentifier.ts",
108+
"../services/codefixes/fixUnusedLabel.ts",
108109
"../services/codefixes/fixJSDocTypes.ts",
109110
"../services/codefixes/fixAwaitInSyncFunction.ts",
110111
"../services/codefixes/disableJsDiagnostics.ts",

src/server/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@
101101
"../services/codefixes/fixExtendsInterfaceBecomesImplements.ts",
102102
"../services/codefixes/fixForgottenThisPropertyAccess.ts",
103103
"../services/codefixes/fixUnusedIdentifier.ts",
104+
"../services/codefixes/fixUnusedLabel.ts",
104105
"../services/codefixes/fixJSDocTypes.ts",
105106
"../services/codefixes/fixAwaitInSyncFunction.ts",
106107
"../services/codefixes/disableJsDiagnostics.ts",

src/server/tsconfig.library.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@
107107
"../services/codefixes/fixExtendsInterfaceBecomesImplements.ts",
108108
"../services/codefixes/fixForgottenThisPropertyAccess.ts",
109109
"../services/codefixes/fixUnusedIdentifier.ts",
110+
"../services/codefixes/fixUnusedLabel.ts",
110111
"../services/codefixes/fixJSDocTypes.ts",
111112
"../services/codefixes/fixAwaitInSyncFunction.ts",
112113
"../services/codefixes/disableJsDiagnostics.ts",
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/* @internal */
2+
namespace ts.codefix {
3+
const fixId = "fixUnusedLabel";
4+
const errorCodes = [Diagnostics.Unused_label.code];
5+
registerCodeFix({
6+
errorCodes,
7+
getCodeActions(context) {
8+
const changes = textChanges.ChangeTracker.with(context, t => doChange(t, context.sourceFile, context.span.start));
9+
return [createCodeFixAction(fixId, changes, Diagnostics.Remove_unused_label, fixId, Diagnostics.Remove_all_unused_labels)];
10+
},
11+
fixIds: [fixId],
12+
getAllCodeActions: context => codeFixAll(context, errorCodes, (changes, diag) => doChange(changes, diag.file, diag.start)),
13+
});
14+
15+
function doChange(changes: textChanges.ChangeTracker, sourceFile: SourceFile, start: number): void {
16+
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) });
19+
}
20+
}

src/services/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
"codefixes/fixExtendsInterfaceBecomesImplements.ts",
9999
"codefixes/fixForgottenThisPropertyAccess.ts",
100100
"codefixes/fixUnusedIdentifier.ts",
101+
"codefixes/fixUnusedLabel.ts",
101102
"codefixes/fixJSDocTypes.ts",
102103
"codefixes/fixAwaitInSyncFunction.ts",
103104
"codefixes/disableJsDiagnostics.ts",
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
// @noUnusedLocals: true
4+
5+
////label: while (1) {}
6+
7+
verify.codeFix({
8+
description: "Remove unused label",
9+
newFileContent:
10+
`while (1) {}`,
11+
});
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
// @noUnusedLocals: true
4+
5+
////label1: while (1) {}
6+
////label2: while (1) {}
7+
8+
verify.codeFixAll({
9+
fixId: "fixUnusedLabel",
10+
fixAllDescription: "Remove all unused labels",
11+
newFileContent:
12+
`while (1) {}
13+
while (1) {}`,
14+
});

0 commit comments

Comments
 (0)