6
6
Expression ,
7
7
factory ,
8
8
FindAllReferences ,
9
+ flatMap ,
9
10
getExpressionPrecedence ,
10
11
getLocaleSpecificMessage ,
11
12
getTokenAtPosition ,
@@ -23,6 +24,7 @@ import {
23
24
VariableDeclaration ,
24
25
} from "../_namespaces/ts" ;
25
26
import { RefactorErrorInfo , registerRefactor } from "../_namespaces/ts.refactor" ;
27
+ import { getReferenceEntriesForNode } from "../findAllReferences" ;
26
28
27
29
const refactorName = "Inline variable" ;
28
30
const refactorDescription = getLocaleSpecificMessage ( Diagnostics . Inline_variable ) ;
@@ -119,30 +121,30 @@ function getInliningInfo(file: SourceFile, startPosition: number, tryWithReferen
119
121
if ( isInitializedVariable ( parent ) && isVariableDeclarationInVariableStatement ( parent ) ) {
120
122
// Find all references to the variable.
121
123
const name = parent . name ;
122
- const referencedSymbols = FindAllReferences . Core . getReferencedSymbolsForNode ( name . pos , name , program , program . getSourceFiles ( ) , cancellationToken ) ;
123
- if ( ! referencedSymbols || referencedSymbols . length !== 1 ) {
124
+ const referenceEntries = getReferenceEntriesForNode ( name . pos , name , program , program . getSourceFiles ( ) , cancellationToken ) ;
125
+ if ( ! referenceEntries ) {
124
126
return undefined ;
125
127
}
126
- const referenceNodes = getReferenceNodes ( referencedSymbols [ 0 ] . references , name ) ;
128
+ const referenceNodes = getReferenceNodes ( referenceEntries , name ) ;
127
129
128
130
return referenceNodes && { references : referenceNodes , declaration : parent , replacement : parent . initializer } ;
129
131
}
130
132
131
133
if ( tryWithReferenceToken && isIdentifier ( token ) ) {
132
134
// Try finding the declaration and nodes to replace via the reference token.
133
135
const referencedSymbols = FindAllReferences . Core . getReferencedSymbolsForNode ( token . pos , token , program , program . getSourceFiles ( ) , cancellationToken ) ;
134
- if ( ! referencedSymbols || referencedSymbols . length !== 1 ) {
136
+ if ( ! referencedSymbols ) {
135
137
return undefined ;
136
138
}
137
139
138
- const { definition, references } = referencedSymbols [ 0 ] ;
140
+ const { definition } = referencedSymbols [ 0 ] ;
139
141
if ( definition ?. type !== FindAllReferences . DefinitionKind . Symbol ) {
140
142
return undefined ;
141
143
}
142
144
143
145
const { valueDeclaration } = definition . symbol ;
144
146
if ( valueDeclaration && isInitializedVariable ( valueDeclaration ) && isVariableDeclarationInVariableStatement ( valueDeclaration ) ) {
145
- const referenceNodes = getReferenceNodes ( references , valueDeclaration . name ) ;
147
+ const referenceNodes = getReferenceNodes ( flatMap ( referencedSymbols , ( { references } ) => references ) , valueDeclaration . name ) ;
146
148
147
149
return referenceNodes && { references : referenceNodes , declaration : valueDeclaration , replacement : valueDeclaration . initializer } ;
148
150
}
0 commit comments