Skip to content

Commit 70585aa

Browse files
authored
Correct node used for isDefinition calculation (microsoft#48499)
It should be adjusted as in `getReferencedSymbolsForNode`. The baseline changes show that it was incorrectly returning false at keywords preceding definitions.
1 parent 9cfa6e2 commit 70585aa

8 files changed

+78
-72
lines changed

src/services/findAllReferences.ts

+14-8
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,10 @@ namespace ts.FindAllReferences {
206206

207207
export function findReferencedSymbols(program: Program, cancellationToken: CancellationToken, sourceFiles: readonly SourceFile[], sourceFile: SourceFile, position: number): ReferencedSymbol[] | undefined {
208208
const node = getTouchingPropertyName(sourceFile, position);
209-
const referencedSymbols = Core.getReferencedSymbolsForNode(position, node, program, sourceFiles, cancellationToken, { use: FindReferencesUse.References });
209+
const options = { use: FindReferencesUse.References };
210+
const referencedSymbols = Core.getReferencedSymbolsForNode(position, node, program, sourceFiles, cancellationToken, options);
210211
const checker = program.getTypeChecker();
211-
const symbol = checker.getSymbolAtLocation(node);
212+
const symbol = checker.getSymbolAtLocation(getAdjustedReferenceLocation(Core.getAdjustedNode(node, options)));
212213
return !referencedSymbols || !referencedSymbols.length ? undefined : mapDefined<SymbolAndEntries, ReferencedSymbol>(referencedSymbols, ({ definition, references }) =>
213214
// Only include referenced symbols that have a valid definition.
214215
definition && {
@@ -622,12 +623,7 @@ namespace ts.FindAllReferences {
622623
export namespace Core {
623624
/** Core find-all-references algorithm. Handles special cases before delegating to `getReferencedSymbolsForSymbol`. */
624625
export function getReferencedSymbolsForNode(position: number, node: Node, program: Program, sourceFiles: readonly SourceFile[], cancellationToken: CancellationToken, options: Options = {}, sourceFilesSet: ReadonlySet<string> = new Set(sourceFiles.map(f => f.fileName))): readonly SymbolAndEntries[] | undefined {
625-
if (options.use === FindReferencesUse.References) {
626-
node = getAdjustedReferenceLocation(node);
627-
}
628-
else if (options.use === FindReferencesUse.Rename) {
629-
node = getAdjustedRenameLocation(node);
630-
}
626+
node = getAdjustedNode(node, options);
631627
if (isSourceFile(node)) {
632628
const resolvedRef = GoToDefinition.getReferenceAtPosition(node, position, program);
633629
if (!resolvedRef?.file) {
@@ -695,6 +691,16 @@ namespace ts.FindAllReferences {
695691
return mergeReferences(program, moduleReferences, references, moduleReferencesOfExportTarget);
696692
}
697693

694+
export function getAdjustedNode(node: Node, options: Options) {
695+
if (options.use === FindReferencesUse.References) {
696+
node = getAdjustedReferenceLocation(node);
697+
}
698+
else if (options.use === FindReferencesUse.Rename) {
699+
node = getAdjustedRenameLocation(node);
700+
}
701+
return node;
702+
}
703+
698704
export function getReferencesForFileName(fileName: string, program: Program, sourceFiles: readonly SourceFile[], sourceFilesSet: ReadonlySet<string> = new Set(sourceFiles.map(f => f.fileName))): readonly Entry[] {
699705
const moduleSymbol = program.getSourceFile(fileName)?.symbol;
700706
if (moduleSymbol) {

tests/baselines/reference/findAllRefsExportEquals.baseline.jsonc

+1-1
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@
271271
"length": 16
272272
},
273273
"isWriteAccess": true,
274-
"isDefinition": false
274+
"isDefinition": true
275275
},
276276
{
277277
"textSpan": {

tests/baselines/reference/findAllRefs_importType_exportEquals.baseline.jsonc

+2-2
Original file line numberDiff line numberDiff line change
@@ -774,7 +774,7 @@
774774
"length": 16
775775
},
776776
"isWriteAccess": true,
777-
"isDefinition": false
777+
"isDefinition": true
778778
},
779779
{
780780
"textSpan": {
@@ -787,7 +787,7 @@
787787
"length": 43
788788
},
789789
"isWriteAccess": true,
790-
"isDefinition": false
790+
"isDefinition": true
791791
},
792792
{
793793
"textSpan": {

tests/baselines/reference/referencesForDeclarationKeywords.baseline.jsonc

+15-15
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132
"length": 13
133133
},
134134
"isWriteAccess": true,
135-
"isDefinition": false
135+
"isDefinition": true
136136
},
137137
{
138138
"textSpan": {
@@ -220,7 +220,7 @@
220220
"length": 25
221221
},
222222
"isWriteAccess": true,
223-
"isDefinition": false
223+
"isDefinition": true
224224
},
225225
{
226226
"textSpan": {
@@ -329,7 +329,7 @@ undefined
329329
"length": 21
330330
},
331331
"isWriteAccess": true,
332-
"isDefinition": false
332+
"isDefinition": true
333333
},
334334
{
335335
"textSpan": {
@@ -342,7 +342,7 @@ undefined
342342
"length": 11
343343
},
344344
"isWriteAccess": true,
345-
"isDefinition": false
345+
"isDefinition": true
346346
}
347347
]
348348
}
@@ -440,7 +440,7 @@ undefined
440440
"length": 21
441441
},
442442
"isWriteAccess": true,
443-
"isDefinition": false
443+
"isDefinition": true
444444
},
445445
{
446446
"textSpan": {
@@ -453,7 +453,7 @@ undefined
453453
"length": 11
454454
},
455455
"isWriteAccess": true,
456-
"isDefinition": false
456+
"isDefinition": true
457457
}
458458
]
459459
}
@@ -523,7 +523,7 @@ undefined
523523
"length": 29
524524
},
525525
"isWriteAccess": true,
526-
"isDefinition": false
526+
"isDefinition": true
527527
}
528528
]
529529
}
@@ -593,7 +593,7 @@ undefined
593593
"length": 13
594594
},
595595
"isWriteAccess": true,
596-
"isDefinition": false
596+
"isDefinition": true
597597
},
598598
{
599599
"textSpan": {
@@ -703,7 +703,7 @@ undefined
703703
"length": 12
704704
},
705705
"isWriteAccess": true,
706-
"isDefinition": false
706+
"isDefinition": true
707707
}
708708
]
709709
}
@@ -773,7 +773,7 @@ undefined
773773
"length": 10
774774
},
775775
"isWriteAccess": true,
776-
"isDefinition": false
776+
"isDefinition": true
777777
}
778778
]
779779
}
@@ -843,7 +843,7 @@ undefined
843843
"length": 15
844844
},
845845
"isWriteAccess": true,
846-
"isDefinition": false
846+
"isDefinition": true
847847
}
848848
]
849849
}
@@ -913,7 +913,7 @@ undefined
913913
"length": 12
914914
},
915915
"isWriteAccess": true,
916-
"isDefinition": false
916+
"isDefinition": true
917917
}
918918
]
919919
}
@@ -1085,7 +1085,7 @@ undefined
10851085
"length": 6
10861086
},
10871087
"isWriteAccess": false,
1088-
"isDefinition": false
1088+
"isDefinition": true
10891089
}
10901090
]
10911091
}
@@ -1167,7 +1167,7 @@ undefined
11671167
"length": 6
11681168
},
11691169
"isWriteAccess": false,
1170-
"isDefinition": false
1170+
"isDefinition": true
11711171
}
11721172
]
11731173
}
@@ -1249,7 +1249,7 @@ undefined
12491249
"length": 12
12501250
},
12511251
"isWriteAccess": true,
1252-
"isDefinition": false
1252+
"isDefinition": true
12531253
}
12541254
]
12551255
}

tests/baselines/reference/referencesForExpressionKeywords.baseline.jsonc

+9-9
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
"length": 29
5858
},
5959
"isWriteAccess": true,
60-
"isDefinition": false
60+
"isDefinition": true
6161
},
6262
{
6363
"textSpan": {
@@ -203,7 +203,7 @@
203203
"length": 29
204204
},
205205
"isWriteAccess": true,
206-
"isDefinition": false
206+
"isDefinition": true
207207
},
208208
{
209209
"textSpan": {
@@ -349,7 +349,7 @@
349349
"length": 29
350350
},
351351
"isWriteAccess": true,
352-
"isDefinition": false
352+
"isDefinition": true
353353
},
354354
{
355355
"textSpan": {
@@ -495,7 +495,7 @@
495495
"length": 29
496496
},
497497
"isWriteAccess": true,
498-
"isDefinition": false
498+
"isDefinition": true
499499
},
500500
{
501501
"textSpan": {
@@ -641,7 +641,7 @@
641641
"length": 29
642642
},
643643
"isWriteAccess": true,
644-
"isDefinition": false
644+
"isDefinition": true
645645
},
646646
{
647647
"textSpan": {
@@ -787,7 +787,7 @@
787787
"length": 29
788788
},
789789
"isWriteAccess": true,
790-
"isDefinition": false
790+
"isDefinition": true
791791
},
792792
{
793793
"textSpan": {
@@ -933,7 +933,7 @@
933933
"length": 29
934934
},
935935
"isWriteAccess": true,
936-
"isDefinition": false
936+
"isDefinition": true
937937
},
938938
{
939939
"textSpan": {
@@ -1079,7 +1079,7 @@
10791079
"length": 29
10801080
},
10811081
"isWriteAccess": true,
1082-
"isDefinition": false
1082+
"isDefinition": true
10831083
},
10841084
{
10851085
"textSpan": {
@@ -1253,7 +1253,7 @@
12531253
"length": 13
12541254
},
12551255
"isWriteAccess": true,
1256-
"isDefinition": false
1256+
"isDefinition": true
12571257
},
12581258
{
12591259
"textSpan": {

tests/baselines/reference/referencesForModifiers.baseline.jsonc

+10-10
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"length": 105
5555
},
5656
"isWriteAccess": true,
57-
"isDefinition": false
57+
"isDefinition": true
5858
}
5959
]
6060
}
@@ -116,7 +116,7 @@
116116
"length": 105
117117
},
118118
"isWriteAccess": true,
119-
"isDefinition": false
119+
"isDefinition": true
120120
}
121121
]
122122
}
@@ -206,7 +206,7 @@
206206
"length": 9
207207
},
208208
"isWriteAccess": true,
209-
"isDefinition": false
209+
"isDefinition": true
210210
}
211211
]
212212
}
@@ -296,7 +296,7 @@
296296
"length": 11
297297
},
298298
"isWriteAccess": true,
299-
"isDefinition": false
299+
"isDefinition": true
300300
}
301301
]
302302
}
@@ -386,7 +386,7 @@
386386
"length": 9
387387
},
388388
"isWriteAccess": true,
389-
"isDefinition": false
389+
"isDefinition": true
390390
}
391391
]
392392
}
@@ -476,7 +476,7 @@
476476
"length": 12
477477
},
478478
"isWriteAccess": true,
479-
"isDefinition": false
479+
"isDefinition": true
480480
}
481481
]
482482
}
@@ -566,7 +566,7 @@
566566
"length": 10
567567
},
568568
"isWriteAccess": true,
569-
"isDefinition": false
569+
"isDefinition": true
570570
}
571571
]
572572
}
@@ -636,7 +636,7 @@
636636
"length": 16
637637
},
638638
"isWriteAccess": true,
639-
"isDefinition": false
639+
"isDefinition": true
640640
}
641641
]
642642
}
@@ -730,7 +730,7 @@
730730
"length": 22
731731
},
732732
"isWriteAccess": true,
733-
"isDefinition": false
733+
"isDefinition": true
734734
}
735735
]
736736
}
@@ -792,7 +792,7 @@
792792
"length": 26
793793
},
794794
"isWriteAccess": true,
795-
"isDefinition": false
795+
"isDefinition": true
796796
}
797797
]
798798
}

0 commit comments

Comments
 (0)