diff --git a/src/services/services.ts b/src/services/services.ts
index 173aea2dfc4..8d28d5d958a 100644
--- a/src/services/services.ts
+++ b/src/services/services.ts
@@ -6167,10 +6167,10 @@ namespace ts {
const references: ReferenceEntry[] = [];
- forEach(sourceFiles, sourceFile => {
- const possiblePositions = getPossibleSymbolReferencePositions(sourceFile, type.text , sourceFile.getStart(), sourceFile.getEnd());
+ for (const sourceFile of sourceFiles) {
+ const possiblePositions = getPossibleSymbolReferencePositions(sourceFile, type.text, sourceFile.getStart(), sourceFile.getEnd());
getReferencesForStringLiteralInFile(sourceFile, type, possiblePositions, references);
- });
+ }
return [{
definition: {
@@ -6185,7 +6185,7 @@ namespace ts {
}];
function getReferencesForStringLiteralInFile(sourceFile: SourceFile, searchType: Type, possiblePositions: number[], references: ReferenceEntry[]): void {
- forEach(possiblePositions, position => {
+ for (const position of possiblePositions) {
cancellationToken.throwIfCancellationRequested();
const node = getTouchingWord(sourceFile, position);
@@ -6197,7 +6197,7 @@ namespace ts {
if (type === searchType) {
references.push(getReferenceEntryFromNode(node));
}
- });
+ }
}
}
@@ -7767,7 +7767,7 @@ namespace ts {
localizedErrorMessage: undefined,
fullDisplayName: typeChecker.getFullyQualifiedName(symbol),
kindModifiers: getSymbolModifiers(symbol),
- triggerSpan: createTriggerSpanForNode(node)
+ triggerSpan: createTriggerSpanForNode(node, sourceFile)
};
}
}
@@ -7787,7 +7787,7 @@ namespace ts {
localizedErrorMessage: undefined,
fullDisplayName: displayName,
kindModifiers: ScriptElementKindModifier.none,
- triggerSpan: createTriggerSpanForNode(node)
+ triggerSpan: createTriggerSpanForNode(node, sourceFile)
};
}
}
@@ -7820,9 +7820,9 @@ namespace ts {
return false;
}
- function createTriggerSpanForNode(node: Node) {
- let start = node.getStart();
- let width = node.getWidth();
+ function createTriggerSpanForNode(node: Node, sourceFile: SourceFile) {
+ let start = node.getStart(sourceFile);
+ let width = node.getWidth(sourceFile);
if (node.kind === SyntaxKind.StringLiteral) {
// Exclude the quotes
start += 1;
diff --git a/tests/cases/fourslash/getOccurrencesStringLiterals.ts b/tests/cases/fourslash/getOccurrencesStringLiterals.ts
new file mode 100644
index 00000000000..efa365cbbb8
--- /dev/null
+++ b/tests/cases/fourslash/getOccurrencesStringLiterals.ts
@@ -0,0 +1,10 @@
+///
+
+////var x = "[|string|]";
+////function f(a = "[|initial value|]") { }
+
+const ranges = test.ranges();
+for (let r of ranges) {
+ goTo.position(r.start);
+ verify.occurrencesAtPositionCount(0);
+}
diff --git a/tests/cases/fourslash/renameStingLiterals.ts b/tests/cases/fourslash/renameStingLiterals.ts
new file mode 100644
index 00000000000..2e31deb46e1
--- /dev/null
+++ b/tests/cases/fourslash/renameStingLiterals.ts
@@ -0,0 +1,11 @@
+///
+
+////var x = "/*1*/string";
+////function f(a = "/*2*/initial value") { }
+
+
+goTo.marker("1");
+verify.renameInfoFailed();
+
+goTo.marker("2");
+verify.renameInfoFailed();