@@ -72,6 +72,7 @@ import {
7272 getNodeKind ,
7373 getPropertySymbolFromBindingElement ,
7474 getPropertySymbolsFromContextualType ,
75+ getQuoteFromPreference ,
7576 getReferencedFileLocation ,
7677 getSuperContainer ,
7778 getSymbolId ,
@@ -151,6 +152,7 @@ import {
151152 isNamespaceExportDeclaration ,
152153 isNewExpressionTarget ,
153154 isNoSubstitutionTemplateLiteral ,
155+ isNumericLiteral ,
154156 isObjectBindingElementWithoutPropertyName ,
155157 isObjectLiteralExpression ,
156158 isObjectLiteralMethod ,
@@ -205,6 +207,7 @@ import {
205207 PropertyAssignment ,
206208 PropertyDeclaration ,
207209 punctuationPart ,
210+ QuotePreference ,
208211 rangeIsOnSingleLine ,
209212 ReferencedSymbol ,
210213 ReferencedSymbolDefinitionInfo ,
@@ -673,8 +676,8 @@ function getDefinitionKindAndDisplayParts(symbol: Symbol, checker: TypeChecker,
673676}
674677
675678/** @internal */
676- export function toRenameLocation ( entry : Entry , originalNode : Node , checker : TypeChecker , providePrefixAndSuffixText : boolean ) : RenameLocation {
677- return { ...entryToDocumentSpan ( entry ) , ...( providePrefixAndSuffixText && getPrefixAndSuffixText ( entry , originalNode , checker ) ) } ;
679+ export function toRenameLocation ( entry : Entry , originalNode : Node , checker : TypeChecker , providePrefixAndSuffixText : boolean , quotePreference : QuotePreference ) : RenameLocation {
680+ return { ...entryToDocumentSpan ( entry ) , ...( providePrefixAndSuffixText && getPrefixAndSuffixText ( entry , originalNode , checker , quotePreference ) ) } ;
678681}
679682
680683function toReferencedSymbolEntry ( entry : Entry , symbol : Symbol | undefined ) : ReferencedSymbolEntry {
@@ -716,7 +719,7 @@ function entryToDocumentSpan(entry: Entry): DocumentSpan {
716719}
717720
718721interface PrefixAndSuffix { readonly prefixText ?: string ; readonly suffixText ?: string ; }
719- function getPrefixAndSuffixText ( entry : Entry , originalNode : Node , checker : TypeChecker ) : PrefixAndSuffix {
722+ function getPrefixAndSuffixText ( entry : Entry , originalNode : Node , checker : TypeChecker , quotePreference : QuotePreference ) : PrefixAndSuffix {
720723 if ( entry . kind !== EntryKind . Span && isIdentifier ( originalNode ) ) {
721724 const { node, kind } = entry ;
722725 const parent = node . parent ;
@@ -760,6 +763,12 @@ function getPrefixAndSuffixText(entry: Entry, originalNode: Node, checker: TypeC
760763 }
761764 }
762765
766+ // If the node is a numerical indexing literal, then add quotes around the property access.
767+ if ( entry . kind !== EntryKind . Span && isNumericLiteral ( entry . node ) && isAccessExpression ( entry . node . parent ) ) {
768+ const quote = getQuoteFromPreference ( quotePreference ) ;
769+ return { prefixText : quote , suffixText : quote } ;
770+ }
771+
763772 return emptyOptions ;
764773}
765774
0 commit comments