Skip to content

Commit 20a70f9

Browse files
author
Andy Hanson
committed
findAllReferences: Clean up uses of getWidth and getStart
1 parent 60def44 commit 20a70f9

File tree

1 file changed

+14
-20
lines changed

1 file changed

+14
-20
lines changed

src/services/findAllReferences.ts

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,9 @@ namespace ts.FindAllReferences.Core {
637637
return parent ? scope.getSourceFile() : scope;
638638
}
639639

640-
function getPossibleSymbolReferencePositions(sourceFile: SourceFile, symbolName: string, start: number, end: number): number[] {
640+
function getPossibleSymbolReferencePositions(sourceFile: SourceFile, symbolName: string, container: Node = sourceFile, fullStart = false): number[] {
641+
const start = fullStart ? container.getFullStart() : container.getStart(sourceFile);
642+
const end = container.getEnd();
641643
const positions: number[] = [];
642644

643645
/// TODO: Cache symbol existence for files to save text search
@@ -676,16 +678,11 @@ namespace ts.FindAllReferences.Core {
676678
const references: Entry[] = [];
677679
const sourceFile = container.getSourceFile();
678680
const labelName = targetLabel.text;
679-
const possiblePositions = getPossibleSymbolReferencePositions(sourceFile, labelName, container.getStart(), container.getEnd());
681+
const possiblePositions = getPossibleSymbolReferencePositions(sourceFile, labelName, container);
680682
for (const position of possiblePositions) {
681683
const node = getTouchingWord(sourceFile, position);
682-
if (!node || node.getWidth() !== labelName.length) {
683-
continue;
684-
}
685-
686684
// Only pick labels that are either the target label, or have a target that is the target label
687-
if (node === targetLabel ||
688-
(isJumpStatementTarget(node) && getTargetLabel(node, labelName) === targetLabel)) {
685+
if (node && (node === targetLabel || (isJumpStatementTarget(node) && getTargetLabel(node, labelName) === targetLabel))) {
689686
references.push(nodeEntry(node));
690687
}
691688
}
@@ -697,15 +694,14 @@ namespace ts.FindAllReferences.Core {
697694
// Compare the length so we filter out strict superstrings of the symbol we are looking for
698695
switch (node && node.kind) {
699696
case SyntaxKind.Identifier:
700-
return node.getWidth() === searchSymbolName.length;
697+
return (node as Identifier).text.length === searchSymbolName.length;
701698

702699
case SyntaxKind.StringLiteral:
703700
return (isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || isNameOfExternalModuleImportOrDeclaration(node)) &&
704-
// For string literals we have two additional chars for the quotes
705-
node.getWidth() === searchSymbolName.length + 2;
701+
(node as StringLiteral).text.length === searchSymbolName.length;
706702

707703
case SyntaxKind.NumericLiteral:
708-
return isLiteralNameOfPropertyDeclarationOrIndexAccess(node) && node.getWidth() === searchSymbolName.length;
704+
return isLiteralNameOfPropertyDeclarationOrIndexAccess(node) && (node as NumericLiteral).text.length === searchSymbolName.length;
709705

710706
default:
711707
return false;
@@ -722,7 +718,7 @@ namespace ts.FindAllReferences.Core {
722718
}
723719

724720
function addReferencesForKeywordInFile(sourceFile: SourceFile, kind: SyntaxKind, searchText: string, references: Push<NodeEntry>): void {
725-
const possiblePositions = getPossibleSymbolReferencePositions(sourceFile, searchText, sourceFile.getStart(), sourceFile.getEnd());
721+
const possiblePositions = getPossibleSymbolReferencePositions(sourceFile, searchText);
726722
for (const position of possiblePositions) {
727723
const referenceLocation = getTouchingPropertyName(sourceFile, position);
728724
if (referenceLocation.kind === kind) {
@@ -746,9 +742,7 @@ namespace ts.FindAllReferences.Core {
746742
return;
747743
}
748744

749-
const start = state.findInComments ? container.getFullStart() : container.getStart();
750-
const possiblePositions = getPossibleSymbolReferencePositions(sourceFile, search.text, start, container.getEnd());
751-
for (const position of possiblePositions) {
745+
for (const position of getPossibleSymbolReferencePositions(sourceFile, search.text, container, /*fullStart*/ state.findInComments)) {
752746
getReferencesAtLocation(sourceFile, position, search, state);
753747
}
754748
}
@@ -1192,7 +1186,7 @@ namespace ts.FindAllReferences.Core {
11921186
const references: Entry[] = [];
11931187

11941188
const sourceFile = searchSpaceNode.getSourceFile();
1195-
const possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "super", searchSpaceNode.getStart(), searchSpaceNode.getEnd());
1189+
const possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "super", searchSpaceNode);
11961190
for (const position of possiblePositions) {
11971191
const node = getTouchingWord(sourceFile, position);
11981192

@@ -1254,13 +1248,13 @@ namespace ts.FindAllReferences.Core {
12541248
if (searchSpaceNode.kind === SyntaxKind.SourceFile) {
12551249
forEach(sourceFiles, sourceFile => {
12561250
cancellationToken.throwIfCancellationRequested();
1257-
possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd());
1251+
possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this");
12581252
getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, references);
12591253
});
12601254
}
12611255
else {
12621256
const sourceFile = searchSpaceNode.getSourceFile();
1263-
possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", searchSpaceNode.getStart(), searchSpaceNode.getEnd());
1257+
possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", searchSpaceNode);
12641258
getThisReferencesInFile(sourceFile, searchSpaceNode, possiblePositions, references);
12651259
}
12661260

@@ -1314,7 +1308,7 @@ namespace ts.FindAllReferences.Core {
13141308

13151309
for (const sourceFile of sourceFiles) {
13161310
cancellationToken.throwIfCancellationRequested();
1317-
const possiblePositions = getPossibleSymbolReferencePositions(sourceFile, node.text, sourceFile.getStart(), sourceFile.getEnd());
1311+
const possiblePositions = getPossibleSymbolReferencePositions(sourceFile, node.text);
13181312
getReferencesForStringLiteralInFile(sourceFile, node.text, possiblePositions, references);
13191313
}
13201314

0 commit comments

Comments
 (0)