mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Add code fix to remove unused label (#24037)
* Add code fix to remove unused label * Test with trivia and fix indentation with dedented label
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
/* @internal */
|
||||
namespace ts.codefix {
|
||||
const fixId = "fixUnusedLabel";
|
||||
const errorCodes = [Diagnostics.Unused_label.code];
|
||||
registerCodeFix({
|
||||
errorCodes,
|
||||
getCodeActions(context) {
|
||||
const changes = textChanges.ChangeTracker.with(context, t => doChange(t, context.sourceFile, context.span.start));
|
||||
return [createCodeFixAction(fixId, changes, Diagnostics.Remove_unused_label, fixId, Diagnostics.Remove_all_unused_labels)];
|
||||
},
|
||||
fixIds: [fixId],
|
||||
getAllCodeActions: context => codeFixAll(context, errorCodes, (changes, diag) => doChange(changes, diag.file, diag.start)),
|
||||
});
|
||||
|
||||
function doChange(changes: textChanges.ChangeTracker, sourceFile: SourceFile, start: number): void {
|
||||
const token = getTokenAtPosition(sourceFile, start, /*includeJsDocComment*/ false);
|
||||
const labeledStatement = cast(token.parent, isLabeledStatement);
|
||||
const pos = token.getStart(sourceFile);
|
||||
const statementPos = labeledStatement.statement.getStart(sourceFile);
|
||||
// If label is on a separate line, just delete the rest of that line, but not the indentation of the labeled statement.
|
||||
const end = positionsAreOnSameLine(pos, statementPos, sourceFile) ? statementPos
|
||||
: skipTrivia(sourceFile.text, findChildOfKind(labeledStatement, SyntaxKind.ColonToken, sourceFile)!.end, /*stopAfterLineBreak*/ true);
|
||||
changes.deleteRange(sourceFile, { pos, end });
|
||||
}
|
||||
}
|
||||
@@ -99,6 +99,7 @@
|
||||
"codefixes/fixForgottenThisPropertyAccess.ts",
|
||||
"codefixes/fixUnusedIdentifier.ts",
|
||||
"codefixes/fixUnreachableCode.ts",
|
||||
"codefixes/fixUnusedLabel.ts",
|
||||
"codefixes/fixJSDocTypes.ts",
|
||||
"codefixes/fixAwaitInSyncFunction.ts",
|
||||
"codefixes/disableJsDiagnostics.ts",
|
||||
|
||||
Reference in New Issue
Block a user