Skip to content

Commit 7fa5f70

Browse files
author
Andy
authored
Remove verify.referencesAre, verify.referencesOf, verify.rangesReferenceEachOther (microsoft#23900)
1 parent 0f79b5b commit 7fa5f70

27 files changed

+101
-149
lines changed

src/harness/fourslash.ts

Lines changed: 10 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1142,32 +1142,6 @@ namespace FourSlash {
11421142
}
11431143
}
11441144

1145-
private verifyReferencesAre(expectedReferences: Range[]) {
1146-
const actualReferences = this.getReferencesAtCaret() || [];
1147-
1148-
if (actualReferences.length > expectedReferences.length) {
1149-
// Find the unaccounted-for reference.
1150-
for (const actual of actualReferences) {
1151-
if (!ts.forEach(expectedReferences, r => r.pos === actual.textSpan.start)) {
1152-
this.raiseError(`A reference ${stringify(actual)} is unaccounted for.`);
1153-
}
1154-
}
1155-
// Probably will never reach here.
1156-
this.raiseError(`There are ${actualReferences.length} references but only ${expectedReferences.length} were expected.`);
1157-
}
1158-
1159-
for (const reference of expectedReferences) {
1160-
const { fileName, pos, end } = reference;
1161-
if (reference.marker && reference.marker.data) {
1162-
const { isWriteAccess, isDefinition } = reference.marker.data as { isWriteAccess?: boolean, isDefinition?: boolean };
1163-
this.verifyReferencesWorker(actualReferences, fileName, pos, end, isWriteAccess, isDefinition);
1164-
}
1165-
else {
1166-
this.verifyReferencesWorker(actualReferences, fileName, pos, end);
1167-
}
1168-
}
1169-
}
1170-
11711145
private verifyDocumentHighlightsRespectFilesList(files: ReadonlyArray<string>): void {
11721146
const startFile = this.activeFile.fileName;
11731147
for (const fileName of files) {
@@ -1179,20 +1153,6 @@ namespace FourSlash {
11791153
}
11801154
}
11811155

1182-
public verifyReferencesOf(range: Range, references: Range[]) {
1183-
this.goToRangeStart(range);
1184-
this.verifyDocumentHighlightsRespectFilesList(unique(references, e => e.fileName));
1185-
this.verifyReferencesAre(references);
1186-
}
1187-
1188-
public verifyRangesReferenceEachOther(ranges?: Range[]) {
1189-
ranges = ranges || this.getRanges();
1190-
assert(ranges.length);
1191-
for (const range of ranges) {
1192-
this.verifyReferencesOf(range, ranges);
1193-
}
1194-
}
1195-
11961156
public verifyReferenceGroups(starts: ArrayOrSingle<string> | ArrayOrSingle<Range>, parts: ReadonlyArray<FourSlashInterface.ReferenceGroup> | undefined): void {
11971157
interface ReferenceGroupJson {
11981158
definition: string | { text: string, range: ts.TextSpan };
@@ -1250,6 +1210,12 @@ namespace FourSlash {
12501210
}
12511211
}
12521212

1213+
// Necessary to have this function since `findReferences` isn't implemented in `client.ts`
1214+
public verifyGetReferencesForServerTest(expected: ReadonlyArray<ts.ReferenceEntry>): void {
1215+
const refs = this.getReferencesAtCaret();
1216+
assert.deepEqual(refs, expected);
1217+
}
1218+
12531219
public verifySingleReferenceGroup(definition: FourSlashInterface.ReferenceGroupDefinition, ranges?: Range[]) {
12541220
ranges = ranges || this.getRanges();
12551221
this.verifyReferenceGroups(ranges, [{ definition, ranges }]);
@@ -1314,23 +1280,6 @@ Actual: ${stringify(fullActual)}`);
13141280
TestState.getDisplayPartsJson(expected), this.messageAtLastKnownMarker("referenced symbol definition display parts"));
13151281
}
13161282

1317-
private verifyReferencesWorker(references: ts.ReferenceEntry[], fileName: string, start: number, end: number, isWriteAccess?: boolean, isDefinition?: boolean) {
1318-
for (const reference of references) {
1319-
if (reference && reference.fileName === fileName && reference.textSpan.start === start && ts.textSpanEnd(reference.textSpan) === end) {
1320-
if (typeof isWriteAccess !== "undefined" && reference.isWriteAccess !== isWriteAccess) {
1321-
this.raiseError(`verifyReferencesAtPositionListContains failed - item isWriteAccess value does not match, actual: ${reference.isWriteAccess}, expected: ${isWriteAccess}.`);
1322-
}
1323-
if (typeof isDefinition !== "undefined" && reference.isDefinition !== isDefinition) {
1324-
this.raiseError(`verifyReferencesAtPositionListContains failed - item isDefinition value does not match, actual: ${reference.isDefinition}, expected: ${isDefinition}.`);
1325-
}
1326-
return;
1327-
}
1328-
}
1329-
1330-
const missingItem = { fileName, start, end, isWriteAccess, isDefinition };
1331-
this.raiseError(`verifyReferencesAtPositionListContains failed - could not find the item: ${stringify(missingItem)} in the returned list: (${stringify(references)})`);
1332-
}
1333-
13341283
private getCompletionListAtCaret(options?: ts.GetCompletionsAtPositionOptions): ts.CompletionInfo {
13351284
return this.languageService.getCompletionsAtPosition(this.activeFile.fileName, this.currentCaretPosition, options);
13361285
}
@@ -4210,10 +4159,6 @@ namespace FourSlashInterface {
42104159
this.state.verifyTypeOfSymbolAtLocation(range, symbol, expected);
42114160
}
42124161

4213-
public referencesOf(start: FourSlash.Range, references: FourSlash.Range[]) {
4214-
this.state.verifyReferencesOf(start, references);
4215-
}
4216-
42174162
public referenceGroups(starts: Many<string> | Many<FourSlash.Range>, parts: ReferenceGroup[]) {
42184163
this.state.verifyReferenceGroups(starts, parts);
42194164
}
@@ -4222,12 +4167,12 @@ namespace FourSlashInterface {
42224167
this.state.verifyNoReferences(markerNameOrRange);
42234168
}
42244169

4225-
public singleReferenceGroup(definition: ReferenceGroupDefinition, ranges?: FourSlash.Range[]) {
4226-
this.state.verifySingleReferenceGroup(definition, ranges);
4170+
public getReferencesForServerTest(expected: ReadonlyArray<ts.ReferenceEntry>) {
4171+
this.state.verifyGetReferencesForServerTest(expected);
42274172
}
42284173

4229-
public rangesReferenceEachOther(ranges?: FourSlash.Range[]) {
4230-
this.state.verifyRangesReferenceEachOther(ranges);
4174+
public singleReferenceGroup(definition: ReferenceGroupDefinition, ranges?: FourSlash.Range[]) {
4175+
this.state.verifySingleReferenceGroup(definition, ranges);
42314176
}
42324177

42334178
public findReferencesDefinitionDisplayPartsAtCaretAre(expected: ts.SymbolDisplayPart[]) {

src/services/findAllReferences.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ namespace ts.FindAllReferences {
119119
const { node } = def;
120120
const symbol = checker.getSymbolAtLocation(node);
121121
const displayParts = symbol && SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(
122-
checker, symbol, node.getSourceFile(), getContainerNode(node), node).displayParts;
122+
checker, symbol, node.getSourceFile(), getContainerNode(node), node).displayParts || [textPart("this")];
123123
return { node, name: "this", kind: ScriptElementKind.variableElement, displayParts };
124124
}
125125
case "string": {

tests/cases/fourslash/esModuleInteropFindAllReferences.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
// @Filename: /abc.d.ts
66
////declare module "a" {
7-
//// export const [|x|]: number;
7+
//// export const [|{| "isWriteAccess": true, "isDefinition": true |}x|]: number;
88
////}
99

1010
// @Filename: /b.ts
1111
////import a from "a";
1212
////a.[|x|];
1313

14-
verify.rangesReferenceEachOther();
14+
verify.singleReferenceGroup("const x: number");

tests/cases/fourslash/esModuleInteropFindAllReferences2.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66

77
// @Filename: /a.d.ts
88
////export as namespace abc;
9-
////export const [|x|]: number;
9+
////export const [|{| "isWriteAccess": true, "isDefinition": true |}x|]: number;
1010

1111
// @Filename: /b.ts
1212
////import a from "./a";
1313
////a.[|x|];
1414

15-
verify.rangesReferenceEachOther();
15+
verify.singleReferenceGroup('const x: number');

tests/cases/fourslash/findAllReferPropertyAccessExpressionHeritageClause.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@
22

33
//// class B {}
44
//// function foo() {
5-
//// return {[|B|]: B};
5+
//// return {[|{| "isWriteAccess": true, "isDefinition": true |}B|]: B};
66
//// }
77
//// class C extends (foo()).[|B|] {}
88
//// class C1 extends foo().[|B|] {}
99

10-
const ranges = test.ranges();
11-
for (const range of ranges) {
12-
verify.referencesOf(range, ranges);
13-
}
10+
verify.singleReferenceGroup("(property) B: typeof B");

tests/cases/fourslash/findAllReferencesDynamicImport1.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
//// import("[|./foo|]")
77
//// var x = import("[|./foo|]")
88

9-
verify.rangesReferenceEachOther();
9+
verify.singleReferenceGroup('module "/tests/cases/fourslash/foo"');
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
/// <reference path='fourslash.ts' />
22

33
// @Filename: foo.ts
4-
//// export function [|bar|]() { return "bar"; }
4+
//// export function [|{| "isWriteAccess": true, "isDefinition": true |}bar|]() { return "bar"; }
55

66
//// var x = import("./foo");
77
//// x.then(foo => {
8-
//// foo.[|bar|]();
8+
//// foo.[|bar|]();
99
//// })
1010

11-
verify.rangesReferenceEachOther();
12-
verify.rangesAreRenameLocations();
11+
verify.singleReferenceGroup("function bar(): string");
12+
verify.rangesAreRenameLocations();
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
/// <reference path='fourslash.ts'/>
22

3-
////import { [|ab|] as [|cd|] } from "doesNotExist";
3+
////import { [|ab|] as [|{| "isWriteAccess": true, "isDefinition": true |}cd|] } from "doesNotExist";
44

55
const [r0, r1] = test.ranges();
6-
verify.referencesOf(r0, [r1]);
7-
verify.referencesOf(r1, [r1]);
6+
verify.referenceGroups([r0, r1], [{ definition: "import cd", ranges: [r1] }]);

tests/cases/fourslash/findAllRefsThisKeyword.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
////x.[|this|];
2626

2727
const [global, f0, f1, g0, g1, x, y, constructor, method, propDef, propUse] = test.ranges();
28-
verify.referencesOf(global, [global]);
28+
verify.singleReferenceGroup("this", [global]);
2929
verify.referenceGroups(f0, [{ definition: "(parameter) this: any", ranges: [f0, f1] }]);
3030
verify.referenceGroups(f1, [{ definition: "this: any", ranges: [f0, f1] }]);
3131
verify.referenceGroups(g0, [{ definition: "(parameter) this: any", ranges: [g0, g1] }]);

tests/cases/fourslash/findAllRefsThisKeywordMultipleFiles.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
//// // different 'this'
1313
//// function f(this) { return this; }
1414

15-
verify.rangesReferenceEachOther();
15+
verify.singleReferenceGroup("this");

0 commit comments

Comments
 (0)