Skip to content

Commit

Permalink
Correct node used for isDefinition calculation (microsoft#48499)
Browse files Browse the repository at this point in the history
It should be adjusted as in `getReferencedSymbolsForNode`.  The baseline changes show that it was incorrectly returning false at keywords preceding definitions.
  • Loading branch information
amcasey committed Mar 31, 2022
1 parent 9cfa6e2 commit 70585aa
Show file tree
Hide file tree
Showing 8 changed files with 78 additions and 72 deletions.
22 changes: 14 additions & 8 deletions src/services/findAllReferences.ts
Expand Up @@ -206,9 +206,10 @@ namespace ts.FindAllReferences {

export function findReferencedSymbols(program: Program, cancellationToken: CancellationToken, sourceFiles: readonly SourceFile[], sourceFile: SourceFile, position: number): ReferencedSymbol[] | undefined {
const node = getTouchingPropertyName(sourceFile, position);
const referencedSymbols = Core.getReferencedSymbolsForNode(position, node, program, sourceFiles, cancellationToken, { use: FindReferencesUse.References });
const options = { use: FindReferencesUse.References };
const referencedSymbols = Core.getReferencedSymbolsForNode(position, node, program, sourceFiles, cancellationToken, options);
const checker = program.getTypeChecker();
const symbol = checker.getSymbolAtLocation(node);
const symbol = checker.getSymbolAtLocation(getAdjustedReferenceLocation(Core.getAdjustedNode(node, options)));
return !referencedSymbols || !referencedSymbols.length ? undefined : mapDefined<SymbolAndEntries, ReferencedSymbol>(referencedSymbols, ({ definition, references }) =>
// Only include referenced symbols that have a valid definition.
definition && {
Expand Down Expand Up @@ -622,12 +623,7 @@ namespace ts.FindAllReferences {
export namespace Core {
/** Core find-all-references algorithm. Handles special cases before delegating to `getReferencedSymbolsForSymbol`. */
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 {
if (options.use === FindReferencesUse.References) {
node = getAdjustedReferenceLocation(node);
}
else if (options.use === FindReferencesUse.Rename) {
node = getAdjustedRenameLocation(node);
}
node = getAdjustedNode(node, options);
if (isSourceFile(node)) {
const resolvedRef = GoToDefinition.getReferenceAtPosition(node, position, program);
if (!resolvedRef?.file) {
Expand Down Expand Up @@ -695,6 +691,16 @@ namespace ts.FindAllReferences {
return mergeReferences(program, moduleReferences, references, moduleReferencesOfExportTarget);
}

export function getAdjustedNode(node: Node, options: Options) {
if (options.use === FindReferencesUse.References) {
node = getAdjustedReferenceLocation(node);
}
else if (options.use === FindReferencesUse.Rename) {
node = getAdjustedRenameLocation(node);
}
return node;
}

export function getReferencesForFileName(fileName: string, program: Program, sourceFiles: readonly SourceFile[], sourceFilesSet: ReadonlySet<string> = new Set(sourceFiles.map(f => f.fileName))): readonly Entry[] {
const moduleSymbol = program.getSourceFile(fileName)?.symbol;
if (moduleSymbol) {
Expand Down
Expand Up @@ -271,7 +271,7 @@
"length": 16
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down
Expand Up @@ -774,7 +774,7 @@
"length": 16
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand All @@ -787,7 +787,7 @@
"length": 43
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down
Expand Up @@ -132,7 +132,7 @@
"length": 13
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down Expand Up @@ -220,7 +220,7 @@
"length": 25
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down Expand Up @@ -329,7 +329,7 @@ undefined
"length": 21
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand All @@ -342,7 +342,7 @@ undefined
"length": 11
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -440,7 +440,7 @@ undefined
"length": 21
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand All @@ -453,7 +453,7 @@ undefined
"length": 11
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -523,7 +523,7 @@ undefined
"length": 29
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -593,7 +593,7 @@ undefined
"length": 13
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down Expand Up @@ -703,7 +703,7 @@ undefined
"length": 12
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -773,7 +773,7 @@ undefined
"length": 10
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -843,7 +843,7 @@ undefined
"length": 15
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -913,7 +913,7 @@ undefined
"length": 12
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -1085,7 +1085,7 @@ undefined
"length": 6
},
"isWriteAccess": false,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -1167,7 +1167,7 @@ undefined
"length": 6
},
"isWriteAccess": false,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -1249,7 +1249,7 @@ undefined
"length": 12
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down
Expand Up @@ -57,7 +57,7 @@
"length": 29
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down Expand Up @@ -203,7 +203,7 @@
"length": 29
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down Expand Up @@ -349,7 +349,7 @@
"length": 29
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down Expand Up @@ -495,7 +495,7 @@
"length": 29
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down Expand Up @@ -641,7 +641,7 @@
"length": 29
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down Expand Up @@ -787,7 +787,7 @@
"length": 29
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down Expand Up @@ -933,7 +933,7 @@
"length": 29
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down Expand Up @@ -1079,7 +1079,7 @@
"length": 29
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down Expand Up @@ -1253,7 +1253,7 @@
"length": 13
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
},
{
"textSpan": {
Expand Down
20 changes: 10 additions & 10 deletions tests/baselines/reference/referencesForModifiers.baseline.jsonc
Expand Up @@ -54,7 +54,7 @@
"length": 105
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -116,7 +116,7 @@
"length": 105
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -206,7 +206,7 @@
"length": 9
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -296,7 +296,7 @@
"length": 11
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -386,7 +386,7 @@
"length": 9
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -476,7 +476,7 @@
"length": 12
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -566,7 +566,7 @@
"length": 10
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -636,7 +636,7 @@
"length": 16
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -730,7 +730,7 @@
"length": 22
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down Expand Up @@ -792,7 +792,7 @@
"length": 26
},
"isWriteAccess": true,
"isDefinition": false
"isDefinition": true
}
]
}
Expand Down

0 comments on commit 70585aa

Please sign in to comment.