Skip to content

Commit 10b174a

Browse files
authored
Fix lineText in references command (microsoft#25494)
Previously it was just the identifier text. Now it is back to the full text of the line.
1 parent 403df45 commit 10b174a

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

src/server/session.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1147,7 +1147,9 @@ namespace ts.server {
11471147
const refs: protocol.ReferencesResponseItem[] = flatMap(references, referencedSymbol =>
11481148
referencedSymbol.references.map(({ fileName, textSpan, isWriteAccess, isDefinition }): protocol.ReferencesResponseItem => {
11491149
const scriptInfo = Debug.assertDefined(this.projectService.getScriptInfo(fileName));
1150-
const lineText = scriptInfo.getSnapshot().getText(textSpan.start, textSpanEnd(textSpan));
1150+
const start = scriptInfo.positionToLineOffset(textSpan.start);
1151+
const lineSpan = scriptInfo.lineToTextSpan(start.line - 1);
1152+
const lineText = scriptInfo.getSnapshot().getText(lineSpan.start, textSpanEnd(lineSpan)).replace(/\r|\n/g, "");
11511153
return { ...toFileSpan(fileName, textSpan, scriptInfo), lineText, isWriteAccess, isDefinition };
11521154
}));
11531155
const result: protocol.ReferencesResponseBody = { refs, symbolName, symbolStartOffset, symbolDisplayString };

src/testRunner/unittests/tsserverProjectSystem.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -9042,9 +9042,9 @@ export function Test2() {
90429042
const response = executeSessionRequest<protocol.ReferencesRequest, protocol.ReferencesResponse>(session, protocol.CommandTypes.References, protocolFileLocationFromSubstring(userTs, "fnA()"));
90439043
assert.deepEqual<protocol.ReferencesResponseBody | undefined>(response, {
90449044
refs: [
9045-
makeReferenceItem(userTs, /*isDefinition*/ true, "fnA"),
9046-
makeReferenceItem(userTs, /*isDefinition*/ false, "fnA", { index: 1 }),
9047-
makeReferenceItem(aTs, /*isDefinition*/ true, "fnA"),
9045+
makeReferenceItem(userTs, /*isDefinition*/ true, "fnA", "import { fnA, instanceA } from \"../a/bin/a\";"),
9046+
makeReferenceItem(userTs, /*isDefinition*/ false, "fnA", "export function fnUser() { fnA(); fnB(); instanceA; }", { index: 1 }),
9047+
makeReferenceItem(aTs, /*isDefinition*/ true, "fnA", "export function fnA() {}"),
90489048
],
90499049
symbolName: "fnA",
90509050
symbolStartOffset: protocolLocationFromSubstring(userTs.content, "fnA()").offset,
@@ -9118,9 +9118,9 @@ export function Test2() {
91189118
const response = executeSessionRequest<protocol.ReferencesRequest, protocol.ReferencesResponse>(session, protocol.CommandTypes.References, protocolFileLocationFromSubstring(userTs, "fnB()"));
91199119
assert.deepEqual<protocol.ReferencesResponseBody | undefined>(response, {
91209120
refs: [
9121-
makeReferenceItem(userTs, /*isDefinition*/ true, "fnB"),
9122-
makeReferenceItem(userTs, /*isDefinition*/ false, "fnB", { index: 1 }),
9123-
makeReferenceItem(bDts, /*isDefinition*/ true, "fnB"),
9121+
makeReferenceItem(userTs, /*isDefinition*/ true, "fnB", "import { fnB } from \"../b/bin/b\";"),
9122+
makeReferenceItem(userTs, /*isDefinition*/ false, "fnB", "export function fnUser() { fnA(); fnB(); instanceA; }", { index: 1 }),
9123+
makeReferenceItem(bDts, /*isDefinition*/ true, "fnB", "export declare function fnB(): void;"),
91249124
],
91259125
symbolName: "fnB",
91269126
symbolStartOffset: protocolLocationFromSubstring(userTs.content, "fnB()").offset,
@@ -9196,12 +9196,12 @@ export function Test2() {
91969196
});
91979197
});
91989198

9199-
function makeReferenceItem(file: File, isDefinition: boolean, text: string, options?: SpanFromSubstringOptions): protocol.ReferencesResponseItem {
9199+
function makeReferenceItem(file: File, isDefinition: boolean, text: string, lineText: string, options?: SpanFromSubstringOptions): protocol.ReferencesResponseItem {
92009200
return {
92019201
...protocolFileSpanFromSubstring(file, text, options),
92029202
isDefinition,
92039203
isWriteAccess: isDefinition,
9204-
lineText: text,
9204+
lineText,
92059205
};
92069206
}
92079207

0 commit comments

Comments
 (0)