Added codefix for replacing qualified names with indexed access types.
This commit is contained in:
parent
e9330d4994
commit
0dc74245e2
|
@ -3657,6 +3657,10 @@
|
||||||
"category": "Message",
|
"category": "Message",
|
||||||
"code": 90025
|
"code": 90025
|
||||||
},
|
},
|
||||||
|
"Rewrite as the indexed access type '{0}'.": {
|
||||||
|
"category": "Message",
|
||||||
|
"code": 90026
|
||||||
|
},
|
||||||
|
|
||||||
"Convert function to an ES2015 class": {
|
"Convert function to an ES2015 class": {
|
||||||
"category": "Message",
|
"category": "Message",
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
/* @internal */
|
||||||
|
namespace ts.codefix {
|
||||||
|
registerCodeFix({
|
||||||
|
errorCodes: [Diagnostics.Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1.code],
|
||||||
|
getCodeActions: (context: CodeFixContext) => {
|
||||||
|
const sourceFile = context.sourceFile;
|
||||||
|
const token = getTokenAtPosition(sourceFile, context.span.start, /*includeJsDocComment*/ false);
|
||||||
|
const qualifiedName = getAncestor(token, SyntaxKind.QualifiedName) as QualifiedName;
|
||||||
|
Debug.assert(!!qualifiedName, "Expected position to be owned by a qualified name.");
|
||||||
|
if (!isIdentifier(qualifiedName.left)) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
const leftText = qualifiedName.left.getText(sourceFile);
|
||||||
|
const rightText = qualifiedName.right.getText(sourceFile);
|
||||||
|
const replacement = createIndexedAccessTypeNode(
|
||||||
|
createTypeReferenceNode(qualifiedName.left, /*typeArguments*/ undefined),
|
||||||
|
createLiteralTypeNode(createLiteral(rightText)));
|
||||||
|
const changeTracker = textChanges.ChangeTracker.fromCodeFixContext(context);
|
||||||
|
changeTracker.replaceNode(sourceFile, qualifiedName, replacement);
|
||||||
|
|
||||||
|
return [{
|
||||||
|
description: formatStringFromArgs(getLocaleSpecificMessage(Diagnostics.Rewrite_as_the_indexed_access_type_0), [`${leftText}["${rightText}"]`]),
|
||||||
|
changes: changeTracker.getChanges()
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
|
@ -1,3 +1,4 @@
|
||||||
|
/// <reference path="correctQualifiedNameToIndexedAccessType.ts" />
|
||||||
/// <reference path="fixClassIncorrectlyImplementsInterface.ts" />
|
/// <reference path="fixClassIncorrectlyImplementsInterface.ts" />
|
||||||
/// <reference path="fixAddMissingMember.ts" />
|
/// <reference path="fixAddMissingMember.ts" />
|
||||||
/// <reference path="fixSpelling.ts" />
|
/// <reference path="fixSpelling.ts" />
|
||||||
|
|
Loading…
Reference in a new issue