Skip to content

Commit

Permalink
Add a code fixer for --isolatedDeclarations errors (#58260)
Browse files Browse the repository at this point in the history
Co-authored-by: Andrew Branch <andrewbranch@users.noreply.github.com>
  • Loading branch information
h-joo and andrewbranch committed Apr 30, 2024
1 parent 749bd83 commit 33b1561
Show file tree
Hide file tree
Showing 58 changed files with 2,696 additions and 6 deletions.
1 change: 1 addition & 0 deletions src/compiler/checker.ts
Expand Up @@ -1611,6 +1611,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
getBaseTypes,
getBaseTypeOfLiteralType,
getWidenedType,
getWidenedLiteralType,
getTypeFromTypeNode: nodeIn => {
const node = getParseTreeNode(nodeIn, isTypeNode);
return node ? getTypeFromTypeNode(node) : errorType;
Expand Down
40 changes: 40 additions & 0 deletions src/compiler/diagnosticMessages.json
Expand Up @@ -7336,6 +7336,46 @@
"category": "Message",
"code": 90061
},
"Add annotation of type '{0}'": {
"category": "Message",
"code": 90062
},
"Add return type '{0}'": {
"category": "Message",
"code": 90063
},
"Extract base class to variable": {
"category": "Message",
"code": 90064
},
"Extract default export to variable": {
"category": "Message",
"code": 90065
},
"Extract binding expressions to variable": {
"category": "Message",
"code": 90066
},
"Add all missing type annotations": {
"category": "Message",
"code": 90067
},
"Add satisfies and an inline type assertion with '{0}'": {
"category": "Message",
"code": 90068
},
"Extract to variable and replace with '{0} as typeof {0}'": {
"category": "Message",
"code": 90069
},
"Mark array literal as const": {
"category": "Message",
"code": 90070
},
"Annotate types of properties expando function in a namespace": {
"category": "Message",
"code": 90071
},

"Convert function to an ES2015 class": {
"category": "Message",
Expand Down
2 changes: 2 additions & 0 deletions src/compiler/types.ts
Expand Up @@ -5022,6 +5022,8 @@ export interface TypeChecker {
getBaseTypeOfLiteralType(type: Type): Type;
getWidenedType(type: Type): Type;
/** @internal */
getWidenedLiteralType(type: Type): Type;
/** @internal */
getPromisedTypeOfPromise(promise: Type, errorNode?: Node): Type | undefined;
/** @internal */
getAwaitedType(type: Type): Type | undefined;
Expand Down
1 change: 1 addition & 0 deletions src/services/_namespaces/ts.codefix.ts
Expand Up @@ -50,6 +50,7 @@ export * from "../codefixes/fixUnreachableCode";
export * from "../codefixes/fixUnusedLabel";
export * from "../codefixes/fixJSDocTypes";
export * from "../codefixes/fixMissingCallParentheses";
export * from "../codefixes/fixMissingTypeAnnotationOnExports";
export * from "../codefixes/fixAwaitInSyncFunction";
export * from "../codefixes/fixPropertyOverrideAccessor";
export * from "../codefixes/inferFromUsage";
Expand Down
9 changes: 8 additions & 1 deletion src/services/codeFixProvider.ts
Expand Up @@ -18,6 +18,7 @@ import {
DiagnosticWithLocation,
FileTextChanges,
flatMap,
getEmitDeclarations,
isString,
map,
TextChange,
Expand Down Expand Up @@ -124,9 +125,15 @@ export function eachDiagnostic(context: CodeFixAllContext, errorCodes: readonly
}

function getDiagnostics({ program, sourceFile, cancellationToken }: CodeFixContextBase) {
return [
const diagnostics = [
...program.getSemanticDiagnostics(sourceFile, cancellationToken),
...program.getSyntacticDiagnostics(sourceFile, cancellationToken),
...computeSuggestionDiagnostics(sourceFile, program, cancellationToken),
];
if (getEmitDeclarations(program.getCompilerOptions())) {
diagnostics.push(
...program.getDeclarationDiagnostics(sourceFile, cancellationToken),
);
}
return diagnostics;
}

0 comments on commit 33b1561

Please sign in to comment.