mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-17 21:06:50 -05:00
feat(33792): add new quick fix service to handle missing call in condition (#37152)
This commit is contained in:
@@ -5377,6 +5377,14 @@
|
||||
"category": "Message",
|
||||
"code": 95066
|
||||
},
|
||||
"Add missing call parentheses": {
|
||||
"category": "Message",
|
||||
"code": 95067
|
||||
},
|
||||
"Add all missing call parentheses": {
|
||||
"category": "Message",
|
||||
"code": 95068
|
||||
},
|
||||
"Add 'unknown' conversion for non-overlapping types": {
|
||||
"category": "Message",
|
||||
"code": 95069
|
||||
|
||||
45
src/services/codefixes/fixMissingCallParentheses.ts
Normal file
45
src/services/codefixes/fixMissingCallParentheses.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
/* @internal */
|
||||
namespace ts.codefix {
|
||||
const fixId = "fixMissingCallParentheses";
|
||||
const errorCodes = [
|
||||
Diagnostics.This_condition_will_always_return_true_since_the_function_is_always_defined_Did_you_mean_to_call_it_instead.code,
|
||||
];
|
||||
|
||||
registerCodeFix({
|
||||
errorCodes,
|
||||
fixIds: [fixId],
|
||||
getCodeActions(context) {
|
||||
const { sourceFile, span } = context;
|
||||
const callName = getCallName(sourceFile, span.start);
|
||||
if (!callName) return;
|
||||
|
||||
const changes = textChanges.ChangeTracker.with(context, t => doChange(t, context.sourceFile, callName));
|
||||
return [createCodeFixAction(fixId, changes, Diagnostics.Add_missing_call_parentheses, fixId, Diagnostics.Add_all_missing_call_parentheses)];
|
||||
},
|
||||
getAllCodeActions: context => codeFixAll(context, errorCodes, (changes, diag) => {
|
||||
const callName = getCallName(diag.file, diag.start);
|
||||
if (callName) doChange(changes, diag.file, callName);
|
||||
})
|
||||
});
|
||||
|
||||
function doChange(changes: textChanges.ChangeTracker, sourceFile: SourceFile, name: Identifier | PrivateIdentifier): void {
|
||||
changes.replaceNodeWithText(sourceFile, name, `${ name.text }()`);
|
||||
}
|
||||
|
||||
function getCallName(sourceFile: SourceFile, start: number): Identifier | PrivateIdentifier | undefined {
|
||||
const token = getTokenAtPosition(sourceFile, start);
|
||||
if (isPropertyAccessExpression(token.parent)) {
|
||||
let current: PropertyAccessExpression = token.parent;
|
||||
while (isPropertyAccessExpression(current.parent)) {
|
||||
current = current.parent;
|
||||
}
|
||||
return current.name;
|
||||
}
|
||||
|
||||
if (isIdentifier(token)) {
|
||||
return token;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
@@ -80,6 +80,7 @@
|
||||
"codefixes/fixUnreachableCode.ts",
|
||||
"codefixes/fixUnusedLabel.ts",
|
||||
"codefixes/fixJSDocTypes.ts",
|
||||
"codefixes/fixMissingCallParentheses.ts",
|
||||
"codefixes/fixAwaitInSyncFunction.ts",
|
||||
"codefixes/disableJsDiagnostics.ts",
|
||||
"codefixes/helpers.ts",
|
||||
|
||||
Reference in New Issue
Block a user