diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts
index bd35923022087..d5c1e179c67e0 100644
--- a/src/harness/fourslash.ts
+++ b/src/harness/fourslash.ts
@@ -525,6 +525,67 @@ namespace FourSlash {
}
}
+ public verifyGoToDefinitionIs(endMarker: string | string[]) {
+ this.verifyGoToDefinitionWorker(endMarker instanceof Array ? endMarker : [endMarker]);
+ }
+
+ public verifyGoToDefinition(arg0: any, endMarkerNames?: string | string[]) {
+ if (endMarkerNames) {
+ this.verifyGoToDefinitionPlain(arg0, endMarkerNames);
+ }
+ else if (arg0 instanceof Array) {
+ const pairs: [string | string[], string | string[]][] = arg0;
+ for (const [start, end] of pairs) {
+ this.verifyGoToDefinitionPlain(start, end);
+ }
+ }
+ else {
+ const obj: { [startMarkerName: string]: string | string[] } = arg0;
+ for (const startMarkerName in obj) {
+ if (ts.hasProperty(obj, startMarkerName)) {
+ this.verifyGoToDefinitionPlain(startMarkerName, obj[startMarkerName]);
+ }
+ }
+ }
+ }
+
+ private verifyGoToDefinitionPlain(startMarkerNames: string | string[], endMarkerNames: string | string[]) {
+ if (startMarkerNames instanceof Array) {
+ for (const start of startMarkerNames) {
+ this.verifyGoToDefinitionSingle(start, endMarkerNames);
+ }
+ }
+ else {
+ this.verifyGoToDefinitionSingle(startMarkerNames, endMarkerNames);
+ }
+ }
+
+ public verifyGoToDefinitionForMarkers(markerNames: string[]) {
+ for (const markerName of markerNames) {
+ this.verifyGoToDefinitionSingle(`${markerName}Reference`, `${markerName}Definition`);
+ }
+ }
+
+ private verifyGoToDefinitionSingle(startMarkerName: string, endMarkerNames: string | string[]) {
+ this.goToMarker(startMarkerName);
+ this.verifyGoToDefinitionWorker(endMarkerNames instanceof Array ? endMarkerNames : [endMarkerNames]);
+ }
+
+ private verifyGoToDefinitionWorker(endMarkers: string[]) {
+ const definitions = this.languageService.getDefinitionAtPosition(this.activeFile.fileName, this.currentCaretPosition) || [];
+
+ if (endMarkers.length !== definitions.length) {
+ this.raiseError(`goToDefinitions failed - expected to find ${endMarkers.length} definitions but got ${definitions.length}`);
+ }
+
+ for (let i = 0; i < endMarkers.length; i++) {
+ const marker = this.getMarkerByName(endMarkers[i]), definition = definitions[i];
+ if (marker.fileName !== definition.fileName || marker.position !== definition.textSpan.start) {
+ this.raiseError(`goToDefinition failed for definition ${i}: expected ${marker.fileName} at ${marker.position}, got ${definition.fileName} at ${definition.textSpan.start}`);
+ }
+ }
+ }
+
public verifyGetEmitOutputForCurrentFile(expected: string): void {
const emit = this.languageService.getEmitOutput(this.activeFile.fileName);
if (emit.outputFiles.length !== 1) {
@@ -1561,21 +1622,6 @@ namespace FourSlash {
this.goToPosition(len);
}
- public goToDefinition(definitionIndex: number) {
- const definitions = this.languageService.getDefinitionAtPosition(this.activeFile.fileName, this.currentCaretPosition);
- if (!definitions || !definitions.length) {
- this.raiseError("goToDefinition failed - expected to find at least one definition location but got 0");
- }
-
- if (definitionIndex >= definitions.length) {
- this.raiseError(`goToDefinition failed - definitionIndex value (${definitionIndex}) exceeds definition list size (${definitions.length})`);
- }
-
- const definition = definitions[definitionIndex];
- this.openFile(definition.fileName);
- this.currentCaretPosition = definition.textSpan.start;
- }
-
public goToTypeDefinition(definitionIndex: number) {
const definitions = this.languageService.getTypeDefinitionAtPosition(this.activeFile.fileName, this.currentCaretPosition);
if (!definitions || !definitions.length) {
@@ -1591,28 +1637,6 @@ namespace FourSlash {
this.currentCaretPosition = definition.textSpan.start;
}
- public verifyDefinitionLocationExists(negative: boolean) {
- const definitions = this.languageService.getDefinitionAtPosition(this.activeFile.fileName, this.currentCaretPosition);
-
- const foundDefinitions = definitions && definitions.length;
-
- if (foundDefinitions && negative) {
- this.raiseError(`goToDefinition - expected to 0 definition locations but got ${definitions.length}`);
- }
- else if (!foundDefinitions && !negative) {
- this.raiseError("goToDefinition - expected to find at least one definition location but got 0");
- }
- }
-
- public verifyDefinitionsCount(negative: boolean, expectedCount: number) {
- const assertFn = negative ? assert.notEqual : assert.equal;
-
- const definitions = this.languageService.getDefinitionAtPosition(this.activeFile.fileName, this.currentCaretPosition);
- const actualCount = definitions && definitions.length || 0;
-
- assertFn(actualCount, expectedCount, this.messageAtLastKnownMarker("Definitions Count"));
- }
-
public verifyTypeDefinitionsCount(negative: boolean, expectedCount: number) {
const assertFn = negative ? assert.notEqual : assert.equal;
@@ -1622,18 +1646,12 @@ namespace FourSlash {
assertFn(actualCount, expectedCount, this.messageAtLastKnownMarker("Type definitions Count"));
}
- public verifyDefinitionsName(negative: boolean, expectedName: string, expectedContainerName: string) {
+ public verifyGoToDefinitionName(expectedName: string, expectedContainerName: string) {
const definitions = this.languageService.getDefinitionAtPosition(this.activeFile.fileName, this.currentCaretPosition);
const actualDefinitionName = definitions && definitions.length ? definitions[0].name : "";
const actualDefinitionContainerName = definitions && definitions.length ? definitions[0].containerName : "";
- if (negative) {
- assert.notEqual(actualDefinitionName, expectedName, this.messageAtLastKnownMarker("Definition Info Name"));
- assert.notEqual(actualDefinitionContainerName, expectedContainerName, this.messageAtLastKnownMarker("Definition Info Container Name"));
- }
- else {
- assert.equal(actualDefinitionName, expectedName, this.messageAtLastKnownMarker("Definition Info Name"));
- assert.equal(actualDefinitionContainerName, expectedContainerName, this.messageAtLastKnownMarker("Definition Info Container Name"));
- }
+ assert.equal(actualDefinitionName, expectedName, this.messageAtLastKnownMarker("Definition Info Name"));
+ assert.equal(actualDefinitionContainerName, expectedContainerName, this.messageAtLastKnownMarker("Definition Info Container Name"));
}
public getMarkers(): Marker[] {
@@ -1641,6 +1659,10 @@ namespace FourSlash {
return this.testData.markers.slice(0);
}
+ public getMarkerNames(): string[] {
+ return Object.keys(this.testData.markerPositions);
+ }
+
public getRanges(): Range[] {
return this.testData.ranges;
}
@@ -2742,6 +2764,10 @@ namespace FourSlashInterface {
return this.state.getMarkers();
}
+ public markerNames(): string[] {
+ return this.state.getMarkerNames();
+ }
+
public marker(name?: string): FourSlash.Marker {
return this.state.getMarkerByName(name);
}
@@ -2777,10 +2803,6 @@ namespace FourSlashInterface {
this.state.goToEOF();
}
- public definition(definitionIndex = 0) {
- this.state.goToDefinition(definitionIndex);
- }
-
public type(definitionIndex = 0) {
this.state.goToTypeDefinition(definitionIndex);
}
@@ -2885,22 +2907,10 @@ namespace FourSlashInterface {
this.state.verifyQuickInfoExists(this.negative);
}
- public definitionCountIs(expectedCount: number) {
- this.state.verifyDefinitionsCount(this.negative, expectedCount);
- }
-
public typeDefinitionCountIs(expectedCount: number) {
this.state.verifyTypeDefinitionsCount(this.negative, expectedCount);
}
- public definitionLocationExists() {
- this.state.verifyDefinitionLocationExists(this.negative);
- }
-
- public verifyDefinitionsName(name: string, containerName: string) {
- this.state.verifyDefinitionsName(this.negative, name, containerName);
- }
-
public isValidBraceCompletionAtPosition(openingBrace: string) {
this.state.verifyBraceCompletionAtPosition(this.negative, openingBrace);
}
@@ -2944,6 +2954,25 @@ namespace FourSlashInterface {
this.state.verifyCurrentFileContent(text);
}
+ public goToDefinitionIs(endMarkers: string | string[]) {
+ this.state.verifyGoToDefinitionIs(endMarkers);
+ }
+
+ public goToDefinition(startMarkerName: string | string[], endMarkerName: string | string[]): void;
+ public goToDefinition(startsAndEnds: [string | string[], string | string[]][]): void;
+ public goToDefinition(startsAndEnds: { [startMarkerName: string]: string | string[] }): void;
+ public goToDefinition(arg0: any, endMarkerName?: string | string[]) {
+ this.state.verifyGoToDefinition(arg0, endMarkerName);
+ }
+
+ public goToDefinitionForMarkers(...markerNames: string[]) {
+ this.state.verifyGoToDefinitionForMarkers(markerNames);
+ }
+
+ public goToDefinitionName(name: string, containerName: string) {
+ this.state.verifyGoToDefinitionName(name, containerName);
+ }
+
public verifyGetEmitOutputForCurrentFile(expected: string): void {
this.state.verifyGetEmitOutputForCurrentFile(expected);
}
diff --git a/tests/cases/fourslash/ambientShorthandGotoDefinition.ts b/tests/cases/fourslash/ambientShorthandGotoDefinition.ts
index 970b87f8ec27a..f7fcbe9f05355 100644
--- a/tests/cases/fourslash/ambientShorthandGotoDefinition.ts
+++ b/tests/cases/fourslash/ambientShorthandGotoDefinition.ts
@@ -12,28 +12,25 @@
goTo.marker("useFoo");
verify.quickInfoIs("import foo");
-goTo.definition();
-verify.caretAtMarker("importFoo");
-goTo.definition();
-verify.caretAtMarker("module");
+verify.goToDefinition({
+ useFoo: "importFoo",
+ importFoo: "module"
+});
goTo.marker("useBar");
verify.quickInfoIs("import bar");
-goTo.definition();
-verify.caretAtMarker("module");
+verify.goToDefinition("useBar", "module");
goTo.marker("useBaz");
verify.quickInfoIs("import baz");
-goTo.definition();
-verify.caretAtMarker("importBaz");
-goTo.marker("idBaz");
-goTo.definition();
-verify.caretAtMarker("module");
+verify.goToDefinition({
+ useBaz: "importBaz",
+ idBaz: "module"
+});
goTo.marker("useBang");
verify.quickInfoIs("import bang = require(\"jquery\")");
-goTo.definition();
-verify.caretAtMarker("importBang");
-goTo.marker("idBang");
-goTo.definition();
-verify.caretAtMarker("module");
+verify.goToDefinition({
+ useBang: "importBang",
+ idBang: "module"
+});
diff --git a/tests/cases/fourslash/definition.ts b/tests/cases/fourslash/definition.ts
index 13abe09437632..705cdd655832b 100644
--- a/tests/cases/fourslash/definition.ts
+++ b/tests/cases/fourslash/definition.ts
@@ -7,6 +7,4 @@
// @Filename: a.ts
//// /*2*/export class Foo {}
-goTo.marker('1');
-goTo.definition();
-verify.caretAtMarker('2');
\ No newline at end of file
+verify.goToDefinition("1", "2");
diff --git a/tests/cases/fourslash/definitionNameOnEnumMember.ts b/tests/cases/fourslash/definitionNameOnEnumMember.ts
index d88e1ef688ef1..b82b0dc0465a7 100644
--- a/tests/cases/fourslash/definitionNameOnEnumMember.ts
+++ b/tests/cases/fourslash/definitionNameOnEnumMember.ts
@@ -8,4 +8,4 @@
////var enumMember = e./*1*/thirdMember;
goTo.marker("1");
-verify.verifyDefinitionsName("thirdMember", "e");
\ No newline at end of file
+verify.goToDefinitionName("thirdMember", "e");
diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts
index 59037e0de676e..1c400ff5f97e8 100644
--- a/tests/cases/fourslash/fourslash.ts
+++ b/tests/cases/fourslash/fourslash.ts
@@ -99,6 +99,7 @@ declare namespace FourSlashInterface {
}
class test_ {
markers(): Marker[];
+ markerNames(): string[];
marker(name?: string): Marker;
ranges(): Range[];
rangesByText(): { [text: string]: Range[] };
@@ -108,7 +109,6 @@ declare namespace FourSlashInterface {
marker(name?: string): void;
bof(): void;
eof(): void;
- definition(definitionIndex?: number): void;
type(definitionIndex?: number): void;
position(position: number, fileIndex?: number): any;
position(position: number, fileName?: string): any;
@@ -132,10 +132,7 @@ declare namespace FourSlashInterface {
errorExistsBeforeMarker(markerName?: string): void;
quickInfoIs(expectedText?: string, expectedDocumentation?: string): void;
quickInfoExists(): void;
- definitionCountIs(expectedCount: number): void;
typeDefinitionCountIs(expectedCount: number): void;
- definitionLocationExists(): void;
- verifyDefinitionsName(name: string, containerName: string): void;
isValidBraceCompletionAtPosition(openingBrace?: string): void;
}
class verify extends verifyNegatable {
@@ -152,6 +149,21 @@ declare namespace FourSlashInterface {
eval(expr: string, value: any): void;
currentLineContentIs(text: string): void;
currentFileContentIs(text: string): void;
+ /** Verifies that goToDefinition at the current position would take you to `endMarker`. */
+ goToDefinitionIs(endMarkers: string | string[]): void;
+ goToDefinitionName(name: string, containerName: string): void;
+ /**
+ * `verify.goToDefinition("a", "b");` verifies that go-to-definition at marker "a" takes you to marker "b".
+ * `verify.goToDefinition(["a", "aa"], "b");` verifies that markers "a" and "aa" have the same definition "b".
+ * `verify.goToDefinition("a", ["b", "bb"]);` verifies that "a" has multiple definitions available.
+ */
+ goToDefinition(startMarkerNames: string | string[], endMarkerNames: string | string[]): void;
+ /** Performs `goToDefinition` for each pair. */
+ goToDefinition(startsAndEnds: [string | string[], string | string[]][]): void;
+ /** Performs `goToDefinition` on each key and value. */
+ goToDefinition(startsAndEnds: { [startMarkerName: string]: string | string[] }): void;
+ /** Verifies goToDefinition for each `${markerName}Reference` -> `${markerName}Definition` */
+ goToDefinitionForMarkers(...markerNames: string[]): void;
verifyGetEmitOutputForCurrentFile(expected: string): void;
verifyGetEmitOutputContentsForCurrentFile(expected: ts.OutputFile[]): void;
/**
diff --git a/tests/cases/fourslash/goToDeclarationDecoratorOverloads.ts b/tests/cases/fourslash/goToDeclarationDecoratorOverloads.ts
index ce012d53abaa8..c107f7f6803ab 100644
--- a/tests/cases/fourslash/goToDeclarationDecoratorOverloads.ts
+++ b/tests/cases/fourslash/goToDeclarationDecoratorOverloads.ts
@@ -13,10 +13,7 @@
//// @/*useDecSymbol*/dec [s]() {}
////}
-goTo.marker("useDecString");
-goTo.definition();
-verify.caretAtMarker("defDecString");
-
-goTo.marker("useDecSymbol");
-goTo.definition();
-verify.caretAtMarker("defDecSymbol");
+verify.goToDefinition({
+ useDecString: "defDecString",
+ useDecSymbol: "defDecSymbol"
+});
diff --git a/tests/cases/fourslash/goToDefinitionAcrossMultipleProjects.ts b/tests/cases/fourslash/goToDefinitionAcrossMultipleProjects.ts
index bac47638be6d6..7c0565c626a8f 100644
--- a/tests/cases/fourslash/goToDefinitionAcrossMultipleProjects.ts
+++ b/tests/cases/fourslash/goToDefinitionAcrossMultipleProjects.ts
@@ -1,17 +1,14 @@
///
//@Filename: a.ts
-////var x: number;
+////var /*def1*/x: number;
//@Filename: b.ts
-////var x: number;
+////var /*def2*/x: number;
//@Filename: c.ts
///////
///////
-/////**/x++;
+/////*use*/x++;
-goTo.file("c.ts");
-goTo.marker();
-
-verify.definitionCountIs(2);
\ No newline at end of file
+verify.goToDefinition("use", ["def1", "def2"]);
diff --git a/tests/cases/fourslash/goToDefinitionAlias.ts b/tests/cases/fourslash/goToDefinitionAlias.ts
index f8141db44e351..23cf849f1014b 100644
--- a/tests/cases/fourslash/goToDefinitionAlias.ts
+++ b/tests/cases/fourslash/goToDefinitionAlias.ts
@@ -23,20 +23,7 @@
//// x;
////}
-
-goTo.marker('alias1Type');
-goTo.definition();
-verify.caretAtMarker('alias1Definition');
-
-goTo.marker('alias2Type');
-goTo.definition();
-verify.caretAtMarker('alias2Definition');
-
-
-goTo.marker('alias1Value');
-goTo.definition();
-verify.caretAtMarker('alias1Definition');
-
-goTo.marker('alias2Value');
-goTo.definition();
-verify.caretAtMarker('alias2Definition');
+verify.goToDefinition([
+ [["alias1Type", "alias1Value"], "alias1Definition"],
+ [["alias2Type", "alias2Value"], "alias2Definition"]
+]);
diff --git a/tests/cases/fourslash/goToDefinitionAmbiants.ts b/tests/cases/fourslash/goToDefinitionAmbiants.ts
index d17ed8d43b09e..57885bed4e97d 100644
--- a/tests/cases/fourslash/goToDefinitionAmbiants.ts
+++ b/tests/cases/fourslash/goToDefinitionAmbiants.ts
@@ -14,16 +14,4 @@
////ambientClass./*staticMethodReference*/method();
////ambientClassVariable./*instanceMethodReference*/method();
-var markerList = [
- "ambientVariable",
- "ambientFunction",
- "constructor",
- "staticMethod",
- "instanceMethod",
-];
-
-markerList.forEach((marker) => {
- goTo.marker(marker + 'Reference');
- goTo.definition();
- verify.caretAtMarker(marker + 'Definition');
-});
+verify.goToDefinitionForMarkers("ambientVariable", "ambientFunction", "constructor", "staticMethod", "instanceMethod");
diff --git a/tests/cases/fourslash/goToDefinitionApparentTypeProperties.ts b/tests/cases/fourslash/goToDefinitionApparentTypeProperties.ts
index 1b1c15a115391..dd0d91810c498 100644
--- a/tests/cases/fourslash/goToDefinitionApparentTypeProperties.ts
+++ b/tests/cases/fourslash/goToDefinitionApparentTypeProperties.ts
@@ -8,10 +8,4 @@
////o./*reference1*/myObjectMethod();
////o["/*reference2*/myObjectMethod"]();
-goTo.marker("reference1");
-goTo.definition();
-verify.caretAtMarker("definition");
-
-goTo.marker("reference2");
-goTo.definition();
-verify.caretAtMarker("definition");
+verify.goToDefinition(["reference1", "reference2"], "definition");
diff --git a/tests/cases/fourslash/goToDefinitionBuiltInTypes.ts b/tests/cases/fourslash/goToDefinitionBuiltInTypes.ts
index 6ce9bf73f5d20..ed7e0e9045c1a 100644
--- a/tests/cases/fourslash/goToDefinitionBuiltInTypes.ts
+++ b/tests/cases/fourslash/goToDefinitionBuiltInTypes.ts
@@ -5,7 +5,6 @@
////var b: /*boolean*/boolean;
////var v: /*void*/void;
-test.markers().forEach((m, i, a) => {
- goTo.position(m.position, m.fileName);
- verify.not.definitionLocationExists();
-});
\ No newline at end of file
+for (const marker of test.markerNames()) {
+ verify.goToDefinition(marker, []);
+}
diff --git a/tests/cases/fourslash/goToDefinitionBuiltInValues.ts b/tests/cases/fourslash/goToDefinitionBuiltInValues.ts
index 168bdd5a86ebf..da9bf31f2c27e 100644
--- a/tests/cases/fourslash/goToDefinitionBuiltInValues.ts
+++ b/tests/cases/fourslash/goToDefinitionBuiltInValues.ts
@@ -6,7 +6,6 @@
////var t = /*true*/true;
////var f = /*false*/false;
-test.markers().forEach((m, i, a) => {
- goTo.position(m.position, m.fileName);
- verify.not.definitionLocationExists();
-});
\ No newline at end of file
+for (const marker of test.markerNames()) {
+ verify.goToDefinition(marker, []);
+}
diff --git a/tests/cases/fourslash/goToDefinitionConstructorOfClassExpression01.ts b/tests/cases/fourslash/goToDefinitionConstructorOfClassExpression01.ts
index aa96400a39768..4b774b8b0ee2d 100644
--- a/tests/cases/fourslash/goToDefinitionConstructorOfClassExpression01.ts
+++ b/tests/cases/fourslash/goToDefinitionConstructorOfClassExpression01.ts
@@ -6,6 +6,4 @@
//// }
////}
-goTo.marker("usage");
-goTo.definition();
-verify.caretAtMarker("definition");
\ No newline at end of file
+verify.goToDefinition("usage", "definition");
diff --git a/tests/cases/fourslash/goToDefinitionConstructorOfClassWhenClassIsPrecededByNamespace01.ts b/tests/cases/fourslash/goToDefinitionConstructorOfClassWhenClassIsPrecededByNamespace01.ts
index dc5c362772c0a..bf698c0752da0 100644
--- a/tests/cases/fourslash/goToDefinitionConstructorOfClassWhenClassIsPrecededByNamespace01.ts
+++ b/tests/cases/fourslash/goToDefinitionConstructorOfClassWhenClassIsPrecededByNamespace01.ts
@@ -11,6 +11,4 @@
////
////var x = new /*usage*/Foo();
-goTo.marker("usage");
-goTo.definition();
-verify.caretAtMarker("definition");
\ No newline at end of file
+verify.goToDefinition("usage", "definition");
diff --git a/tests/cases/fourslash/goToDefinitionConstructorOverloads.ts b/tests/cases/fourslash/goToDefinitionConstructorOverloads.ts
index d52243a6465cd..a3a5e3286b28f 100644
--- a/tests/cases/fourslash/goToDefinitionConstructorOverloads.ts
+++ b/tests/cases/fourslash/goToDefinitionConstructorOverloads.ts
@@ -9,14 +9,8 @@
////var constructorOverload = new /*constructorOverloadReference1*/ConstructorOverload();
////var constructorOverload = new /*constructorOverloadReference2*/ConstructorOverload("foo");
-goTo.marker('constructorOverloadReference1');
-goTo.definition();
-verify.caretAtMarker('constructorOverload1');
-
-goTo.marker('constructorOverloadReference2');
-goTo.definition();
-verify.caretAtMarker('constructorOverload2');
-
-goTo.marker('constructorOverload1');
-goTo.definition();
-verify.caretAtMarker('constructorDefinition');
+verify.goToDefinition({
+ constructorOverloadReference1: "constructorOverload1",
+ constructorOverloadReference2: "constructorOverload2",
+ constructorOverload1: "constructorDefinition"
+});
diff --git a/tests/cases/fourslash/goToDefinitionDecorator.ts b/tests/cases/fourslash/goToDefinitionDecorator.ts
index b0899a9576c88..c86b02ab820d4 100644
--- a/tests/cases/fourslash/goToDefinitionDecorator.ts
+++ b/tests/cases/fourslash/goToDefinitionDecorator.ts
@@ -16,11 +16,7 @@
//// return target => target;
////}
-
-goTo.marker('decoratorUse');
-goTo.definition();
-verify.caretAtMarker('decoratorDefinition');
-
-goTo.marker('decoratorFactoryUse');
-goTo.definition();
-verify.caretAtMarker('decoratorFactoryDefinition');
+verify.goToDefinition({
+ decoratorUse: "decoratorDefinition",
+ decoratorFactoryUse: "decoratorFactoryDefinition"
+});
diff --git a/tests/cases/fourslash/goToDefinitionDifferentFile.ts b/tests/cases/fourslash/goToDefinitionDifferentFile.ts
index 3aa31d1556c56..1679563942c51 100644
--- a/tests/cases/fourslash/goToDefinitionDifferentFile.ts
+++ b/tests/cases/fourslash/goToDefinitionDifferentFile.ts
@@ -14,16 +14,4 @@
////class fooCls implements /*remoteInterfaceReference*/remoteInterface { }
////var fooVar = /*remoteModuleReference*/remoteModule.foo;
-var markerList = [
- "remoteVariable",
- "remoteFunction",
- "remoteClass",
- "remoteInterface",
- "remoteModule",
-];
-
-markerList.forEach((marker) => {
- goTo.marker(marker + 'Reference');
- goTo.definition();
- verify.caretAtMarker(marker + 'Definition');
-});
+verify.goToDefinitionForMarkers("remoteVariable", "remoteFunction", "remoteClass", "remoteInterface", "remoteModule");
diff --git a/tests/cases/fourslash/goToDefinitionDifferentFileIndirectly.ts b/tests/cases/fourslash/goToDefinitionDifferentFileIndirectly.ts
index 7287fde2d1d8a..96a65a2203381 100644
--- a/tests/cases/fourslash/goToDefinitionDifferentFileIndirectly.ts
+++ b/tests/cases/fourslash/goToDefinitionDifferentFileIndirectly.ts
@@ -21,16 +21,4 @@
////class rem2fooCls implements /*remoteInterfaceReference*/rem2Int { }
////var rem2fooVar = /*remoteModuleReference*/rem2Mod.foo;
-var markerList = [
- "remoteVariable",
- "remoteFunction",
- "remoteClass",
- "remoteInterface",
- "remoteModule",
-];
-
-markerList.forEach((marker) => {
- goTo.marker(marker + 'Reference');
- goTo.definition();
- verify.caretAtMarker(marker + 'Definition');
-});
\ No newline at end of file
+verify.goToDefinitionForMarkers("remoteVariable", "remoteFunction", "remoteClass", "remoteInterface", "remoteModule")
diff --git a/tests/cases/fourslash/goToDefinitionExternalModuleName.ts b/tests/cases/fourslash/goToDefinitionExternalModuleName.ts
index 13abe09437632..705cdd655832b 100644
--- a/tests/cases/fourslash/goToDefinitionExternalModuleName.ts
+++ b/tests/cases/fourslash/goToDefinitionExternalModuleName.ts
@@ -7,6 +7,4 @@
// @Filename: a.ts
//// /*2*/export class Foo {}
-goTo.marker('1');
-goTo.definition();
-verify.caretAtMarker('2');
\ No newline at end of file
+verify.goToDefinition("1", "2");
diff --git a/tests/cases/fourslash/goToDefinitionExternalModuleName2.ts b/tests/cases/fourslash/goToDefinitionExternalModuleName2.ts
index 06be8e676dd86..866d21b363292 100644
--- a/tests/cases/fourslash/goToDefinitionExternalModuleName2.ts
+++ b/tests/cases/fourslash/goToDefinitionExternalModuleName2.ts
@@ -8,6 +8,4 @@
/////*2*/class Foo {}
////export var x = 0;
-goTo.marker('1');
-goTo.definition();
-verify.caretAtMarker('2');
\ No newline at end of file
+verify.goToDefinition("1", "2");
diff --git a/tests/cases/fourslash/goToDefinitionExternalModuleName3.ts b/tests/cases/fourslash/goToDefinitionExternalModuleName3.ts
index cd31f027895aa..afd3b4054a283 100644
--- a/tests/cases/fourslash/goToDefinitionExternalModuleName3.ts
+++ b/tests/cases/fourslash/goToDefinitionExternalModuleName3.ts
@@ -9,6 +9,4 @@
//// class Foo { }
////}
-goTo.marker('1');
-goTo.definition();
-verify.caretAtMarker('2');
\ No newline at end of file
+verify.goToDefinition("1", "2");
diff --git a/tests/cases/fourslash/goToDefinitionExternalModuleName4.ts b/tests/cases/fourslash/goToDefinitionExternalModuleName4.ts
index c8bbaa458e465..50d679f7e9e50 100644
--- a/tests/cases/fourslash/goToDefinitionExternalModuleName4.ts
+++ b/tests/cases/fourslash/goToDefinitionExternalModuleName4.ts
@@ -3,5 +3,4 @@
// @Filename: b.ts
////import n = require('unknown/*1*/');
-goTo.marker('1');
-verify.not.definitionLocationExists();
\ No newline at end of file
+verify.goToDefinition("1", []);
diff --git a/tests/cases/fourslash/goToDefinitionExternalModuleName5.ts b/tests/cases/fourslash/goToDefinitionExternalModuleName5.ts
index 5a6596caccba9..ae9343a8f5b57 100644
--- a/tests/cases/fourslash/goToDefinitionExternalModuleName5.ts
+++ b/tests/cases/fourslash/goToDefinitionExternalModuleName5.ts
@@ -5,6 +5,4 @@
//// class Foo { }
////}
-goTo.marker('1');
-goTo.definition();
-verify.caretAtMarker('2');
\ No newline at end of file
+verify.goToDefinition("1", "2");
diff --git a/tests/cases/fourslash/goToDefinitionExternalModuleName6.ts b/tests/cases/fourslash/goToDefinitionExternalModuleName6.ts
index 46cafbb806c3a..03c3a23febc3f 100644
--- a/tests/cases/fourslash/goToDefinitionExternalModuleName6.ts
+++ b/tests/cases/fourslash/goToDefinitionExternalModuleName6.ts
@@ -8,6 +8,4 @@
//// class Foo { }
////}
-goTo.marker('1');
-goTo.definition();
-verify.caretAtMarker('2');
\ No newline at end of file
+verify.goToDefinition("1", "2");
diff --git a/tests/cases/fourslash/goToDefinitionExternalModuleName7.ts b/tests/cases/fourslash/goToDefinitionExternalModuleName7.ts
index dcaf4b1f02110..4c82099ab2041 100644
--- a/tests/cases/fourslash/goToDefinitionExternalModuleName7.ts
+++ b/tests/cases/fourslash/goToDefinitionExternalModuleName7.ts
@@ -8,6 +8,4 @@
//// class Foo { }
////}
-goTo.marker('1');
-goTo.definition();
-verify.caretAtMarker('2');
\ No newline at end of file
+verify.goToDefinition("1", "2");
diff --git a/tests/cases/fourslash/goToDefinitionExternalModuleName8.ts b/tests/cases/fourslash/goToDefinitionExternalModuleName8.ts
index 03c36567dc008..5eab37e839398 100644
--- a/tests/cases/fourslash/goToDefinitionExternalModuleName8.ts
+++ b/tests/cases/fourslash/goToDefinitionExternalModuleName8.ts
@@ -8,6 +8,4 @@
//// class Foo { }
////}
-goTo.marker('1');
-goTo.definition();
-verify.caretAtMarker('2');
\ No newline at end of file
+verify.goToDefinition("1", "2");
diff --git a/tests/cases/fourslash/goToDefinitionExternalModuleName9.ts b/tests/cases/fourslash/goToDefinitionExternalModuleName9.ts
index 43111c6763fbe..9e0c1b4986ec7 100644
--- a/tests/cases/fourslash/goToDefinitionExternalModuleName9.ts
+++ b/tests/cases/fourslash/goToDefinitionExternalModuleName9.ts
@@ -8,6 +8,4 @@
//// class Foo { }
////}
-goTo.marker('1');
-goTo.definition();
-verify.caretAtMarker('2');
\ No newline at end of file
+verify.goToDefinition("1", "2");
diff --git a/tests/cases/fourslash/goToDefinitionFunctionOverloads.ts b/tests/cases/fourslash/goToDefinitionFunctionOverloads.ts
index 4d1c09efd7a40..e30150a1f45d8 100644
--- a/tests/cases/fourslash/goToDefinitionFunctionOverloads.ts
+++ b/tests/cases/fourslash/goToDefinitionFunctionOverloads.ts
@@ -8,18 +8,9 @@
/////*functionOverloadReference2*/functionOverload("123");
/////*brokenOverload*/functionOverload({});
-goTo.marker('functionOverloadReference1');
-goTo.definition();
-verify.caretAtMarker('functionOverload1');
-
-goTo.marker('functionOverloadReference2');
-goTo.definition();
-verify.caretAtMarker('functionOverload2');
-
-goTo.marker('brokenOverload');
-goTo.definition();
-verify.caretAtMarker('functionOverload1');
-
-goTo.marker('functionOverload');
-goTo.definition();
-verify.caretAtMarker('functionOverloadDefinition');
+verify.goToDefinition({
+ functionOverloadReference1: "functionOverload1",
+ functionOverloadReference2: "functionOverload2",
+ brokenOverload: "functionOverload1",
+ functionOverload: "functionOverloadDefinition"
+});
diff --git a/tests/cases/fourslash/goToDefinitionFunctionOverloadsInClass.ts b/tests/cases/fourslash/goToDefinitionFunctionOverloadsInClass.ts
index d5f5a374c39b5..3426a4d5e1eda 100644
--- a/tests/cases/fourslash/goToDefinitionFunctionOverloadsInClass.ts
+++ b/tests/cases/fourslash/goToDefinitionFunctionOverloadsInClass.ts
@@ -11,10 +11,7 @@
//// constructor() { }
////}
-goTo.marker('staticFunctionOverload');
-goTo.definition();
-verify.caretAtMarker('staticFunctionOverloadDefinition');
-
-goTo.marker('functionOverload');
-goTo.definition();
-verify.caretAtMarker('functionOverloadDefinition');
\ No newline at end of file
+verify.goToDefinition({
+ staticFunctionOverload: "staticFunctionOverloadDefinition",
+ functionOverload: "functionOverloadDefinition"
+});
diff --git a/tests/cases/fourslash/goToDefinitionImplicitConstructor.ts b/tests/cases/fourslash/goToDefinitionImplicitConstructor.ts
index 023d7da8ce89a..bf24e35307f80 100644
--- a/tests/cases/fourslash/goToDefinitionImplicitConstructor.ts
+++ b/tests/cases/fourslash/goToDefinitionImplicitConstructor.ts
@@ -4,6 +4,4 @@
////}
////var implicitConstructor = new /*constructorReference*/ImplicitConstructor();
-goTo.marker('constructorReference');
-goTo.definition();
-verify.caretAtMarker('constructorDefinition');
\ No newline at end of file
+verify.goToDefinitionForMarkers("constructor");
diff --git a/tests/cases/fourslash/goToDefinitionImportedNames.ts b/tests/cases/fourslash/goToDefinitionImportedNames.ts
index 98a791d23aed6..b7374d00f1819 100644
--- a/tests/cases/fourslash/goToDefinitionImportedNames.ts
+++ b/tests/cases/fourslash/goToDefinitionImportedNames.ts
@@ -14,8 +14,5 @@
//// x;
////}
-goTo.file("b.ts");
-goTo.marker('classAliasDefinition');
-goTo.definition();
-verify.caretAtMarker('classDefinition');
+verify.goToDefinition("classAliasDefinition", "classDefinition");
diff --git a/tests/cases/fourslash/goToDefinitionImportedNames2.ts b/tests/cases/fourslash/goToDefinitionImportedNames2.ts
index e5ab58d10cf18..b0b8776ee37de 100644
--- a/tests/cases/fourslash/goToDefinitionImportedNames2.ts
+++ b/tests/cases/fourslash/goToDefinitionImportedNames2.ts
@@ -14,8 +14,4 @@
//// x;
////}
-goTo.file("b.ts");
-
-goTo.marker('classAliasDefinition');
-goTo.definition();
-verify.caretAtMarker('classDefinition');
+verify.goToDefinition("classAliasDefinition", "classDefinition");
diff --git a/tests/cases/fourslash/goToDefinitionImportedNames3.ts b/tests/cases/fourslash/goToDefinitionImportedNames3.ts
index 5e9376d70cb41..f80164643607c 100644
--- a/tests/cases/fourslash/goToDefinitionImportedNames3.ts
+++ b/tests/cases/fourslash/goToDefinitionImportedNames3.ts
@@ -27,12 +27,4 @@
//// x;
////}
-goTo.file("e.ts");
-
-goTo.marker('classReference');
-goTo.definition();
-verify.caretAtMarker('classDefinition');
-
-goTo.marker('classAliasDefinition');
-goTo.definition();
-verify.caretAtMarker('classDefinition');
+verify.goToDefinition(["classReference", "classAliasDefinition"], "classDefinition");
diff --git a/tests/cases/fourslash/goToDefinitionImportedNames4.ts b/tests/cases/fourslash/goToDefinitionImportedNames4.ts
index e0ef512dc418f..4b6b019cfaecb 100644
--- a/tests/cases/fourslash/goToDefinitionImportedNames4.ts
+++ b/tests/cases/fourslash/goToDefinitionImportedNames4.ts
@@ -14,8 +14,4 @@
//// x;
////}
-goTo.file("b.ts");
-
-goTo.marker('classAliasDefinition');
-goTo.definition();
-verify.caretAtMarker('classDefinition');
+verify.goToDefinition("classAliasDefinition", "classDefinition");
diff --git a/tests/cases/fourslash/goToDefinitionImportedNames5.ts b/tests/cases/fourslash/goToDefinitionImportedNames5.ts
index abd3bee998adc..5add12ae0bcbc 100644
--- a/tests/cases/fourslash/goToDefinitionImportedNames5.ts
+++ b/tests/cases/fourslash/goToDefinitionImportedNames5.ts
@@ -14,8 +14,4 @@
//// x;
////}
-goTo.file("b.ts");
-
-goTo.marker('classAliasDefinition');
-goTo.definition();
-verify.caretAtMarker('classDefinition');
+verify.goToDefinition("classAliasDefinition", "classDefinition");
diff --git a/tests/cases/fourslash/goToDefinitionImportedNames6.ts b/tests/cases/fourslash/goToDefinitionImportedNames6.ts
index c665946c3b148..21603cded426b 100644
--- a/tests/cases/fourslash/goToDefinitionImportedNames6.ts
+++ b/tests/cases/fourslash/goToDefinitionImportedNames6.ts
@@ -14,8 +14,4 @@
//// x;
////}
-goTo.file("b.ts");
-
-goTo.marker('moduleAliasDefinition');
-goTo.definition();
-verify.caretAtMarker('moduleDefinition');
+verify.goToDefinition("moduleAliasDefinition", "moduleDefinition");
diff --git a/tests/cases/fourslash/goToDefinitionImportedNames7.ts b/tests/cases/fourslash/goToDefinitionImportedNames7.ts
index d5bcc499c7c6c..86be4af3d85da 100644
--- a/tests/cases/fourslash/goToDefinitionImportedNames7.ts
+++ b/tests/cases/fourslash/goToDefinitionImportedNames7.ts
@@ -10,8 +10,4 @@
////}
////export default Class;
-goTo.file("b.ts");
-
-goTo.marker('classAliasDefinition');
-goTo.definition();
-verify.caretAtMarker('classDefinition');
+verify.goToDefinition("classAliasDefinition", "classDefinition");
diff --git a/tests/cases/fourslash/goToDefinitionInMemberDeclaration.ts b/tests/cases/fourslash/goToDefinitionInMemberDeclaration.ts
index 1ee65e5644fe8..66719bb621b3a 100644
--- a/tests/cases/fourslash/goToDefinitionInMemberDeclaration.ts
+++ b/tests/cases/fourslash/goToDefinitionInMemberDeclaration.ts
@@ -19,35 +19,9 @@
//// }
////}
-
-goTo.marker("interfaceReference");
-goTo.definition();
-verify.caretAtMarker("interfaceDefinition");
-
-goTo.marker("interfaceReferenceInList");
-goTo.definition();
-verify.caretAtMarker("interfaceDefinition");
-
-goTo.marker("interfaceReferenceInConstructor");
-goTo.definition();
-verify.caretAtMarker("interfaceDefinition");
-
-goTo.marker("classReference");
-goTo.definition();
-verify.caretAtMarker("classDefinition");
-
-goTo.marker("classReferenceInInitializer");
-goTo.definition();
-verify.caretAtMarker("classDefinition");
-
-goTo.marker("enumReference");
-goTo.definition();
-verify.caretAtMarker("enumDefinition");
-
-goTo.marker("enumReferenceInInitializer");
-goTo.definition();
-verify.caretAtMarker("enumDefinition");
-
-goTo.marker("selfReference");
-goTo.definition();
-verify.caretAtMarker("selfDefinition");
\ No newline at end of file
+verify.goToDefinition([
+ [["interfaceReference", "interfaceReferenceInList", "interfaceReferenceInConstructor"], "interfaceDefinition"],
+ [["classReference", "classReferenceInInitializer"], "classDefinition"],
+ [["enumReference", "enumReferenceInInitializer"], "enumDefinition"],
+ ["selfReference", "selfDefinition"]
+]);
diff --git a/tests/cases/fourslash/goToDefinitionInTypeArgument.ts b/tests/cases/fourslash/goToDefinitionInTypeArgument.ts
index 2a12e49c5b7ae..343b5810df306 100644
--- a/tests/cases/fourslash/goToDefinitionInTypeArgument.ts
+++ b/tests/cases/fourslash/goToDefinitionInTypeArgument.ts
@@ -6,11 +6,4 @@
////
////var x = new Fo/*fooReference*/o();
-
-goTo.marker("barReference");
-goTo.definition();
-verify.caretAtMarker("barDefinition");
-
-goTo.marker("fooReference");
-goTo.definition();
-verify.caretAtMarker("fooDefinition");
+verify.goToDefinitionForMarkers("bar", "foo");
diff --git a/tests/cases/fourslash/goToDefinitionInterfaceAfterImplement.ts b/tests/cases/fourslash/goToDefinitionInterfaceAfterImplement.ts
index e6a763a98f1b7..585cc187e4851 100644
--- a/tests/cases/fourslash/goToDefinitionInterfaceAfterImplement.ts
+++ b/tests/cases/fourslash/goToDefinitionInterfaceAfterImplement.ts
@@ -11,6 +11,4 @@
//// }
////}
-goTo.marker('interfaceReference');
-goTo.definition();
-verify.caretAtMarker('interfaceDefinition');
\ No newline at end of file
+verify.goToDefinitionForMarkers("interface");
diff --git a/tests/cases/fourslash/goToDefinitionLabels.ts b/tests/cases/fourslash/goToDefinitionLabels.ts
index fea447a81fbcb..5cbf3ac8f2f05 100644
--- a/tests/cases/fourslash/goToDefinitionLabels.ts
+++ b/tests/cases/fourslash/goToDefinitionLabels.ts
@@ -9,19 +9,11 @@
//// }
////}
-goTo.marker('1');
-goTo.definition();
-verify.caretAtMarker('label1Definition');
-
-goTo.marker('2');
-goTo.definition();
-verify.caretAtMarker('label2Definition');
-
-// labels accross function bounderies
-goTo.marker('3');
-goTo.definition();
-verify.caretAtMarker('label1Definition');
-
-// undefined label
-goTo.marker('4');
-verify.not.definitionLocationExists();
\ No newline at end of file
+verify.goToDefinition({
+ 1: "label1Definition",
+ 2: "label2Definition",
+ // labels accross function boundaries
+ 3: "label1Definition",
+ // undefined label
+ 4: []
+});
diff --git a/tests/cases/fourslash/goToDefinitionMethodOverloads.ts b/tests/cases/fourslash/goToDefinitionMethodOverloads.ts
index 7b4bd0630d955..199b5aee22605 100644
--- a/tests/cases/fourslash/goToDefinitionMethodOverloads.ts
+++ b/tests/cases/fourslash/goToDefinitionMethodOverloads.ts
@@ -18,27 +18,11 @@
////methodOverload./*instanceMethodReference1*/method();
////methodOverload./*instanceMethodReference2*/method("456");
-goTo.marker('staticMethodReference1');
-goTo.definition();
-verify.caretAtMarker('staticMethodOverload1');
-
-goTo.marker('staticMethodReference2');
-goTo.definition();
-verify.caretAtMarker('staticMethodOverload2');
-
-goTo.marker('instanceMethodReference1');
-goTo.definition();
-verify.caretAtMarker('instanceMethodOverload1');
-
-goTo.marker('instanceMethodReference2');
-goTo.definition();
-verify.caretAtMarker('instanceMethodOverload2');
-
-goTo.marker('staticMethodOverload1Name');
-goTo.definition();
-verify.caretAtMarker('staticMethodDefinition');
-
-goTo.marker('instanceMethodOverload1Name');
-goTo.definition();
-verify.caretAtMarker('instanceMethodDefinition');
-
+verify.goToDefinition({
+ staticMethodReference1: "staticMethodOverload1",
+ staticMethodReference2: "staticMethodOverload2",
+ instanceMethodReference1: "instanceMethodOverload1",
+ instanceMethodReference2: "instanceMethodOverload2",
+ staticMethodOverload1Name: "staticMethodDefinition",
+ instanceMethodOverload1Name: "instanceMethodDefinition"
+});
diff --git a/tests/cases/fourslash/goToDefinitionMultipleDefinitions.ts b/tests/cases/fourslash/goToDefinitionMultipleDefinitions.ts
index 6539a02539852..7b2cf6e7a851c 100644
--- a/tests/cases/fourslash/goToDefinitionMultipleDefinitions.ts
+++ b/tests/cases/fourslash/goToDefinitionMultipleDefinitions.ts
@@ -1,51 +1,34 @@
///
// @Filename: a.ts
-/////*interfaceDefintion1*/interface IFoo {
+/////*interfaceDefinition1*/interface IFoo {
//// instance1: number;
////}
// @Filename: b.ts
-/////*interfaceDefintion2*/interface IFoo {
+/////*interfaceDefinition2*/interface IFoo {
//// instance2: number;
////}
////
-/////*interfaceDefintion3*/interface IFoo {
+/////*interfaceDefinition3*/interface IFoo {
//// instance3: number;
////}
////
////var ifoo: IFo/*interfaceReference*/o;
-goTo.marker('interfaceReference');
-goTo.definition(0);
-verify.caretAtMarker('interfaceDefintion1');
-
-goTo.marker('interfaceReference');
-goTo.definition(1);
-verify.caretAtMarker('interfaceDefintion2');
-
-goTo.marker('interfaceReference');
-goTo.definition(2);
-verify.caretAtMarker('interfaceDefintion3');
-
+verify.goToDefinition("interfaceReference", ["interfaceDefinition1", "interfaceDefinition2", "interfaceDefinition3"]);
// @Filename: c.ts
-/////*moduleDefintion1*/module Module {
+/////*moduleDefinition1*/module Module {
//// export class c1 { }
////}
// @Filename: d.ts
-/////*moduleDefintion2*/module Module {
+/////*moduleDefinition2*/module Module {
//// export class c2 { }
////}
// @Filename: e.ts
////Modul/*moduleReference*/e;
-goTo.marker('moduleReference');
-goTo.definition(0);
-verify.caretAtMarker('moduleDefintion1');
-
-goTo.marker('moduleReference');
-goTo.definition(1);
-verify.caretAtMarker('moduleDefintion2');
+verify.goToDefinition("moduleReference", ["moduleDefinition1", "moduleDefinition2"]);
diff --git a/tests/cases/fourslash/goToDefinitionObjectBindingElementPropertyName01.ts b/tests/cases/fourslash/goToDefinitionObjectBindingElementPropertyName01.ts
index 9348ba0567866..32b08ab710d57 100644
--- a/tests/cases/fourslash/goToDefinitionObjectBindingElementPropertyName01.ts
+++ b/tests/cases/fourslash/goToDefinitionObjectBindingElementPropertyName01.ts
@@ -8,7 +8,4 @@
////var foo: I;
////var { /*use*/property1: prop1 } = foo;
-goTo.marker("use");
-verify.definitionLocationExists();
-goTo.definition();
-verify.caretAtMarker("def");
\ No newline at end of file
+verify.goToDefinition("use", "def");
diff --git a/tests/cases/fourslash/goToDefinitionObjectLiteralProperties.ts b/tests/cases/fourslash/goToDefinitionObjectLiteralProperties.ts
index 545172fb186d7..8523df2111b90 100644
--- a/tests/cases/fourslash/goToDefinitionObjectLiteralProperties.ts
+++ b/tests/cases/fourslash/goToDefinitionObjectLiteralProperties.ts
@@ -14,16 +14,4 @@
////o./*methodReference*/method;
////o./*es6StyleMethodReference*/es6StyleMethod;
-var markerList = [
- "value",
- "getter",
- "setter",
- "method",
- "es6StyleMethod",
-];
-
-markerList.forEach((marker) => {
- goTo.marker(marker + 'Reference');
- goTo.definition();
- verify.caretAtMarker(marker + 'Definition');
-});
\ No newline at end of file
+verify.goToDefinitionForMarkers("value", "getter", "setter", "method", "es6StyleMethod");
diff --git a/tests/cases/fourslash/goToDefinitionOverloadsInMultiplePropertyAccesses.ts b/tests/cases/fourslash/goToDefinitionOverloadsInMultiplePropertyAccesses.ts
index de15c633e5fdd..63c23cfe46f50 100644
--- a/tests/cases/fourslash/goToDefinitionOverloadsInMultiplePropertyAccesses.ts
+++ b/tests/cases/fourslash/goToDefinitionOverloadsInMultiplePropertyAccesses.ts
@@ -11,6 +11,4 @@
////}
////A.B./*2*/f("");
-goTo.marker("2");
-goTo.definition();
-verify.caretAtMarker("1");
+verify.goToDefinition("2", "1");
diff --git a/tests/cases/fourslash/goToDefinitionPartialImplementation.ts b/tests/cases/fourslash/goToDefinitionPartialImplementation.ts
index 81e417b6c0f14..90402b3f8e67d 100644
--- a/tests/cases/fourslash/goToDefinitionPartialImplementation.ts
+++ b/tests/cases/fourslash/goToDefinitionPartialImplementation.ts
@@ -9,13 +9,11 @@
// @Filename: goToDefinitionPartialImplementation_2.ts
////module A {
-//// export interface IA {
+//// /*Part2Definition*/export interface IA {
//// x: number;
//// }
////
//// var x: /*Part2Use*/IA;
////}
-goTo.marker('Part2Use');
-goTo.definition();
-verify.caretAtMarker('Part1Definition');
+verify.goToDefinition("Part2Use", ["Part1Definition", "Part2Definition"]);
diff --git a/tests/cases/fourslash/goToDefinitionPrimitives.ts b/tests/cases/fourslash/goToDefinitionPrimitives.ts
index 19840f3b22819..c0bf24835943f 100644
--- a/tests/cases/fourslash/goToDefinitionPrimitives.ts
+++ b/tests/cases/fourslash/goToDefinitionPrimitives.ts
@@ -2,7 +2,4 @@
////var x: st/*primitive*/ring;
-goTo.marker("primitive");
-verify.not.definitionLocationExists();
-
-
+verify.goToDefinition("primitive", []);
diff --git a/tests/cases/fourslash/goToDefinitionSameFile.ts b/tests/cases/fourslash/goToDefinitionSameFile.ts
index 1285932b3f2bc..6bbdaf3a18909 100644
--- a/tests/cases/fourslash/goToDefinitionSameFile.ts
+++ b/tests/cases/fourslash/goToDefinitionSameFile.ts
@@ -13,16 +13,4 @@
////class fooCls implements /*localInterfaceReference*/localInterface { }
////var fooVar = /*localModuleReference*/localModule.foo;
-var markerList = [
- "localVariable",
- "localFunction",
- "localClass",
- "localInterface",
- "localModule",
-];
-
-markerList.forEach((marker) => {
- goTo.marker(marker + 'Reference');
- goTo.definition();
- verify.caretAtMarker(marker + 'Definition');
-});
+verify.goToDefinitionForMarkers("localVariable", "localFunction", "localClass", "localInterface", "localModule");
diff --git a/tests/cases/fourslash/goToDefinitionShadowVariable.ts b/tests/cases/fourslash/goToDefinitionShadowVariable.ts
index 69488026af082..0a30228790baf 100644
--- a/tests/cases/fourslash/goToDefinitionShadowVariable.ts
+++ b/tests/cases/fourslash/goToDefinitionShadowVariable.ts
@@ -6,6 +6,4 @@
//// /*shadowVariableReference*/shadowVariable = 1;
////}
-goTo.marker('shadowVariableReference');
-goTo.definition();
-verify.caretAtMarker('shadowVariableDefinition');
+verify.goToDefinitionForMarkers("shadowVariable");
diff --git a/tests/cases/fourslash/goToDefinitionShadowVariableInsideModule.ts b/tests/cases/fourslash/goToDefinitionShadowVariableInsideModule.ts
index 92f2761b61a50..953b8ea47fe33 100644
--- a/tests/cases/fourslash/goToDefinitionShadowVariableInsideModule.ts
+++ b/tests/cases/fourslash/goToDefinitionShadowVariableInsideModule.ts
@@ -5,6 +5,4 @@
//// /*shadowVariableReference*/shdVar = 1;
////}
-goTo.marker('shadowVariableReference');
-goTo.definition();
-verify.caretAtMarker('shadowVariableDefinition');
\ No newline at end of file
+verify.goToDefinitionForMarkers("shadowVariable");
diff --git a/tests/cases/fourslash/goToDefinitionShorthandProperty01.ts b/tests/cases/fourslash/goToDefinitionShorthandProperty01.ts
index 5e906893719f6..4107049286c08 100644
--- a/tests/cases/fourslash/goToDefinitionShorthandProperty01.ts
+++ b/tests/cases/fourslash/goToDefinitionShorthandProperty01.ts
@@ -7,19 +7,9 @@
//// obj./*valueReference1*/name;
//// obj./*valueReference2*/id;
-goTo.marker("valueDefinition1");
-goTo.definition();
-verify.caretAtMarker("valueDeclaration1");
-
-goTo.marker("valueDefinition2");
-goTo.definition(0);
-verify.caretAtMarker("valueDeclaration2");
-goTo.definition(1);
-verify.caretAtMarker("valueDeclaration3");
-
-goTo.marker("valueReference1");
-goTo.definition();
-verify.caretAtMarker("valueDefinition1");
-goTo.marker("valueReference2");
-goTo.definition();
-verify.caretAtMarker("valueDefinition2");
+verify.goToDefinition({
+ valueDefinition1: "valueDeclaration1",
+ valueDefinition2: ["valueDeclaration2", "valueDeclaration3"],
+ valueReference1: "valueDefinition1",
+ valueReference2: "valueDefinition2"
+});
diff --git a/tests/cases/fourslash/goToDefinitionShorthandProperty02.ts b/tests/cases/fourslash/goToDefinitionShorthandProperty02.ts
index 1f8fe466277d2..0ecdcacdcd6ea 100644
--- a/tests/cases/fourslash/goToDefinitionShorthandProperty02.ts
+++ b/tests/cases/fourslash/goToDefinitionShorthandProperty02.ts
@@ -4,5 +4,4 @@
//// f/*1*/oo
////}
-goTo.marker("1");
-verify.not.definitionLocationExists();
\ No newline at end of file
+verify.goToDefinition("1", []);
diff --git a/tests/cases/fourslash/goToDefinitionShorthandProperty03.ts b/tests/cases/fourslash/goToDefinitionShorthandProperty03.ts
index eb21b159f5ada..42a9ee0a4d692 100644
--- a/tests/cases/fourslash/goToDefinitionShorthandProperty03.ts
+++ b/tests/cases/fourslash/goToDefinitionShorthandProperty03.ts
@@ -7,10 +7,7 @@
//// /*letProp*/y
////}
-goTo.marker("varProp");
-goTo.definition();
-verify.caretAtMarker("varDef");
-
-goTo.marker("letProp");
-goTo.definition();
-verify.caretAtMarker("letDef");
\ No newline at end of file
+verify.goToDefinition({
+ varProp: "varDef",
+ letProp: "letDef"
+});
diff --git a/tests/cases/fourslash/goToDefinitionSimple.ts b/tests/cases/fourslash/goToDefinitionSimple.ts
index 47c1909cf12ce..39aa8ecfca913 100644
--- a/tests/cases/fourslash/goToDefinitionSimple.ts
+++ b/tests/cases/fourslash/goToDefinitionSimple.ts
@@ -7,10 +7,4 @@
//// var n = new /*1*/c();
//// var n = new c/*3*/();
-goTo.marker('1');
-goTo.definition();
-verify.caretAtMarker('2');
-
-goTo.marker('3');
-goTo.definition();
-verify.caretAtMarker('2');
+verify.goToDefinition(["1", "3"], "2");
diff --git a/tests/cases/fourslash/goToDefinitionSourceUnit.ts b/tests/cases/fourslash/goToDefinitionSourceUnit.ts
index 09900ff41be8d..e66b5ef79606f 100644
--- a/tests/cases/fourslash/goToDefinitionSourceUnit.ts
+++ b/tests/cases/fourslash/goToDefinitionSourceUnit.ts
@@ -16,9 +16,7 @@
// @Filename: b.ts
/////*fileB*/
-goTo.marker("unknownFile");
-verify.not.definitionLocationExists();
-
-goTo.marker("knownFile");
-goTo.definition();
-verify.caretAtMarker('fileB');
+verify.goToDefinition({
+ unknownFile: [],
+ knownFile: "fileB"
+});
diff --git a/tests/cases/fourslash/goToDefinitionTaggedTemplateOverloads.ts b/tests/cases/fourslash/goToDefinitionTaggedTemplateOverloads.ts
index 54a2039b0a1eb..fad27cabbb6e3 100644
--- a/tests/cases/fourslash/goToDefinitionTaggedTemplateOverloads.ts
+++ b/tests/cases/fourslash/goToDefinitionTaggedTemplateOverloads.ts
@@ -7,10 +7,7 @@
/////*useFNumber*/f`${0}`;
/////*useFBool*/f`${false}`;
-goTo.marker("useFNumber");
-goTo.definition();
-verify.caretAtMarker("defFNumber");
-
-goTo.marker("useFBool");
-goTo.definition();
-verify.caretAtMarker("defFBool");
+verify.goToDefinition({
+ useFNumber: "defFNumber",
+ useFBool: "defFBool"
+});
diff --git a/tests/cases/fourslash/goToDefinitionThis.ts b/tests/cases/fourslash/goToDefinitionThis.ts
index 300e3423d81cf..5cb94ef35c7a3 100644
--- a/tests/cases/fourslash/goToDefinitionThis.ts
+++ b/tests/cases/fourslash/goToDefinitionThis.ts
@@ -1,6 +1,5 @@
///
-// @noLib: true
////function f(/*fnDecl*/this: number) {
//// return /*fnUse*/this;
////}
@@ -9,12 +8,8 @@
//// get self(/*getterDecl*/this: number) { return /*getterUse*/this; }
////}
-function verifyDefinition(a, b) {
- goTo.marker(a);
- goTo.definition();
- verify.caretAtMarker(b);
-}
-
-verifyDefinition("fnUse", "fnDecl");
-verifyDefinition("clsUse", "cls");
-verifyDefinition("getterUse", "getterDecl");
+verify.goToDefinition({
+ "fnUse": "fnDecl",
+ "clsUse": "cls",
+ "getterUse": "getterDecl"
+});
diff --git a/tests/cases/fourslash/goToDefinitionTypePredicate.ts b/tests/cases/fourslash/goToDefinitionTypePredicate.ts
index 40f1d1eb94c0f..dd2b69f37e86a 100644
--- a/tests/cases/fourslash/goToDefinitionTypePredicate.ts
+++ b/tests/cases/fourslash/goToDefinitionTypePredicate.ts
@@ -5,12 +5,7 @@
//// return typeof parameter === "string";
//// }
-goTo.marker('parameterName');
-
-goTo.definition();
-verify.caretAtMarker('parameterDeclaration');
-
-goTo.marker('typeReference');
-
-goTo.definition();
-verify.caretAtMarker('classDeclaration');
\ No newline at end of file
+verify.goToDefinition({
+ parameterName: "parameterDeclaration",
+ typeReference: "classDeclaration"
+});
diff --git a/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts b/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts
index 78dfa94c5e44a..ad02bb9d85124 100644
--- a/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts
+++ b/tests/cases/fourslash/goToDefinitionTypeReferenceDirective.ts
@@ -8,6 +8,4 @@
//// ///
//// $.x;
-goTo.marker("1");
-goTo.definition();
-verify.caretAtMarker("0");
\ No newline at end of file
+verify.goToDefinition("1", "0");
diff --git a/tests/cases/fourslash/goToDefinitionUndefinedSymbols.ts b/tests/cases/fourslash/goToDefinitionUndefinedSymbols.ts
index 8b7b19dc8716b..ceb1dc6d5be10 100644
--- a/tests/cases/fourslash/goToDefinitionUndefinedSymbols.ts
+++ b/tests/cases/fourslash/goToDefinitionUndefinedSymbols.ts
@@ -5,7 +5,6 @@
////var x = {}; x.some/*undefinedProperty*/Property;
////var a: any; a.some/*unkownProperty*/Property;
-test.markers().forEach((m, i, a) => {
- goTo.position(m.position, m.fileName);
- verify.not.definitionLocationExists();
-});
+for (const marker of test.markerNames()) {
+ verify.goToDefinition(marker, []);
+}
diff --git a/tests/cases/fourslash/goToDefinitionUnionTypeProperty1.ts b/tests/cases/fourslash/goToDefinitionUnionTypeProperty1.ts
index 65d7201aecf25..82bd07e32f04f 100644
--- a/tests/cases/fourslash/goToDefinitionUnionTypeProperty1.ts
+++ b/tests/cases/fourslash/goToDefinitionUnionTypeProperty1.ts
@@ -15,12 +15,4 @@
////x./*propertyReference*/commonProperty;
////x./*3*/commonFunction;
-
-goTo.marker("propertyReference");
-verify.definitionCountIs(2);
-goTo.definition(0);
-verify.caretAtMarker("propertyDefinition1");
-
-goTo.marker("propertyReference");
-goTo.definition(1);
-verify.caretAtMarker("propertyDefinition2");
+verify.goToDefinition("propertyReference", ["propertyDefinition1", "propertyDefinition2"]);
diff --git a/tests/cases/fourslash/goToDefinitionUnionTypeProperty2.ts b/tests/cases/fourslash/goToDefinitionUnionTypeProperty2.ts
index 674d5f4b62365..22ffb906e8e5a 100644
--- a/tests/cases/fourslash/goToDefinitionUnionTypeProperty2.ts
+++ b/tests/cases/fourslash/goToDefinitionUnionTypeProperty2.ts
@@ -16,11 +16,4 @@
////
////x.common./*propertyReference*/a;
-goTo.marker("propertyReference");
-verify.definitionCountIs(2);
-goTo.definition(0);
-verify.caretAtMarker("propertyDefinition2");
-
-goTo.marker("propertyReference");
-goTo.definition(1);
-verify.caretAtMarker("propertyDefinition1");
+verify.goToDefinition("propertyReference", ["propertyDefinition2", "propertyDefinition1"]);
diff --git a/tests/cases/fourslash/goToDefinitionUnionTypeProperty3.ts b/tests/cases/fourslash/goToDefinitionUnionTypeProperty3.ts
index 337bae7d5200f..fde4d2319fec6 100644
--- a/tests/cases/fourslash/goToDefinitionUnionTypeProperty3.ts
+++ b/tests/cases/fourslash/goToDefinitionUnionTypeProperty3.ts
@@ -9,7 +9,4 @@
////
////var x = (strings || numbers)./*usage*/specialPop()
-goTo.marker("usage");
-verify.definitionCountIs(1);
-goTo.definition();
-verify.caretAtMarker("definition");
+verify.goToDefinition("usage", "definition");
diff --git a/tests/cases/fourslash/goToDefinitionUnionTypeProperty4.ts b/tests/cases/fourslash/goToDefinitionUnionTypeProperty4.ts
index eb17f9570c2cb..f69554098c52a 100644
--- a/tests/cases/fourslash/goToDefinitionUnionTypeProperty4.ts
+++ b/tests/cases/fourslash/goToDefinitionUnionTypeProperty4.ts
@@ -18,15 +18,4 @@
////
////var x = (snapcrackle || magnitude || art)./*usage*/pop;
-goTo.marker("usage");
-verify.definitionCountIs(3);
-goTo.definition(0);
-verify.caretAtMarker("def1");
-
-goTo.marker("usage");
-goTo.definition(1);
-verify.caretAtMarker("def2");
-
-goTo.marker("usage");
-goTo.definition(2);
-verify.caretAtMarker("def3");
\ No newline at end of file
+verify.goToDefinition("usage", ["def1", "def2", "def3"]);
diff --git a/tests/cases/fourslash/goToDefinition_super.ts b/tests/cases/fourslash/goToDefinition_super.ts
index 576d3535af085..7a7008ba07fe6 100644
--- a/tests/cases/fourslash/goToDefinition_super.ts
+++ b/tests/cases/fourslash/goToDefinition_super.ts
@@ -19,15 +19,11 @@
//// }
////}
-// Super in call position goes to constructor.
-goTo.marker("super");
-goTo.definition();
-verify.caretAtMarker("ctr");
-// Super in any other position goes to the superclass.
-goTo.marker("superExpression");
-goTo.definition();
-verify.caretAtMarker("B");
-
-goTo.marker("superBroken");
-verify.definitionCountIs(0);
+verify.goToDefinition({
+ // Super in call position goes to constructor.
+ super: "ctr",
+ // Super in any other position goes to the superclass.
+ superExpression: "B",
+ superBroken: []
+});
diff --git a/tests/cases/fourslash/goToModuleAliasDefinition.ts b/tests/cases/fourslash/goToModuleAliasDefinition.ts
index 7b210df3e0f00..cdec82fd0d4dc 100644
--- a/tests/cases/fourslash/goToModuleAliasDefinition.ts
+++ b/tests/cases/fourslash/goToModuleAliasDefinition.ts
@@ -7,7 +7,5 @@
//// /*3*/import n = require('a');
//// var x = new /*1*/n.Foo();
-goTo.marker('1');
-goTo.definition();
// Won't-fixed: Should go to '2' instead
-verify.caretAtMarker('3');
+verify.goToDefinition("1", "3");
diff --git a/tests/cases/fourslash/hoverOverComment.ts b/tests/cases/fourslash/hoverOverComment.ts
index c0e585ca3b665..653eaedfcb770 100644
--- a/tests/cases/fourslash/hoverOverComment.ts
+++ b/tests/cases/fourslash/hoverOverComment.ts
@@ -6,6 +6,5 @@
goTo.marker();
verify.quickInfoIs("");
-verify.verifyDefinitionsName("", "");
-verify.typeDefinitionCountIs(0);
+verify.goToDefinitionIs([]);
verify.referencesAre([]);
diff --git a/tests/cases/fourslash/javaScriptClass3.ts b/tests/cases/fourslash/javaScriptClass3.ts
index 47004d53b044f..41ce79b35eb35 100644
--- a/tests/cases/fourslash/javaScriptClass3.ts
+++ b/tests/cases/fourslash/javaScriptClass3.ts
@@ -15,10 +15,7 @@
//// x.alpha/*src1*/;
//// x.beta/*src2*/;
-goTo.marker('src1');
-goTo.definition();
-verify.caretAtMarker('dst1');
-
-goTo.marker('src2');
-goTo.definition();
-verify.caretAtMarker('dst2');
+verify.goToDefinition({
+ src1: "dst1",
+ src2: "dst2"
+});
diff --git a/tests/cases/fourslash/jsxSpreadReference.ts b/tests/cases/fourslash/jsxSpreadReference.ts
index 64ab03e6ab9a5..595549967e62d 100644
--- a/tests/cases/fourslash/jsxSpreadReference.ts
+++ b/tests/cases/fourslash/jsxSpreadReference.ts
@@ -17,9 +17,7 @@
//// var [|/*dst*/nn|]: {name?: string; size?: number};
//// var x = ;
-goTo.marker('src');
-goTo.definition();
-verify.caretAtMarker('dst');
+verify.goToDefinition("src", "dst");
goTo.marker('src');
verify.renameLocations(/*findInStrings*/ false, /*findInComments*/ false);
diff --git a/tests/cases/fourslash/proto.ts b/tests/cases/fourslash/proto.ts
index d99a3d8b5b580..638faa1d73e6e 100644
--- a/tests/cases/fourslash/proto.ts
+++ b/tests/cases/fourslash/proto.ts
@@ -14,7 +14,6 @@ verify.quickInfoIs("var __proto__: M.__proto__", "");
goTo.marker('3');
verify.completionListContains("__proto__", "var __proto__: M.__proto__", "");
edit.insert("__proto__");
-goTo.definition();
-verify.caretAtMarker('2');
+verify.goToDefinitionIs("2");
goTo.marker('4');
verify.quickInfoIs("var fun: (__proto__: any) => boolean", "");
diff --git a/tests/cases/fourslash/qualifiedName_import-declaration-with-variable-entity-names.ts b/tests/cases/fourslash/qualifiedName_import-declaration-with-variable-entity-names.ts
index 97e5750241f2a..ea660aa89ecc3 100644
--- a/tests/cases/fourslash/qualifiedName_import-declaration-with-variable-entity-names.ts
+++ b/tests/cases/fourslash/qualifiedName_import-declaration-with-variable-entity-names.ts
@@ -21,6 +21,4 @@ verify.occurrencesAtPositionContains(def);
verify.occurrencesAtPositionContains(imp);
verify.occurrencesAtPositionContains(mem);
-goTo.definition();
-
-verify.caretAtMarker('def');
\ No newline at end of file
+verify.goToDefinitionIs("def");
diff --git a/tests/cases/fourslash/quickInfoMeaning.ts b/tests/cases/fourslash/quickInfoMeaning.ts
index 51b1733748682..390dc36795948 100644
--- a/tests/cases/fourslash/quickInfoMeaning.ts
+++ b/tests/cases/fourslash/quickInfoMeaning.ts
@@ -26,13 +26,11 @@ verify.navigationItemsListContains("foo", "const", "foo", "exact");
goTo.marker("foo_value");
verify.quickInfoIs("const foo: number");
-goTo.definition();
-verify.caretAtMarker("foo_value_declaration");
+verify.goToDefinitionIs("foo_value_declaration");
goTo.marker("foo_type");
verify.quickInfoIs("import foo = require(\"foo_module\")");
-goTo.definition();
-verify.caretAtMarker("foo_type_declaration");
+verify.goToDefinitionIs("foo_type_declaration");
// Above tested for global const and imported interface. Now test with global interface and imported const.
@@ -58,10 +56,8 @@ verify.navigationItemsListContains("bar", "interface", "bar", "exact");
goTo.marker("bar_value");
verify.quickInfoIs("import bar = require(\"bar_module\")");
-goTo.definition();
-verify.caretAtMarker("bar_value_declaration");
+verify.goToDefinitionIs("bar_value_declaration");
goTo.marker("bar_type");
verify.quickInfoIs("interface bar");
-goTo.definition();
-verify.caretAtMarker("bar_type_declaration");
+verify.goToDefinitionIs("bar_type_declaration");
diff --git a/tests/cases/fourslash/server/definition01.ts b/tests/cases/fourslash/server/definition01.ts
index c0c297f89e587..7889d185fcd72 100644
--- a/tests/cases/fourslash/server/definition01.ts
+++ b/tests/cases/fourslash/server/definition01.ts
@@ -7,6 +7,4 @@
// @Filename: a.ts
//// /*2*/export class Foo {}
-goTo.marker('1');
-goTo.definition();
-verify.caretAtMarker('2');
\ No newline at end of file
+verify.goToDefinition("1", "2");
diff --git a/tests/cases/fourslash/server/jsdocTypedefTagGoToDefinition.ts b/tests/cases/fourslash/server/jsdocTypedefTagGoToDefinition.ts
index 4db14611938b7..2183c8d54716b 100644
--- a/tests/cases/fourslash/server/jsdocTypedefTagGoToDefinition.ts
+++ b/tests/cases/fourslash/server/jsdocTypedefTagGoToDefinition.ts
@@ -19,11 +19,7 @@
//// /** @type {Animal} */
//// var animal; animal.animalName/*4*/
-goTo.file('jsdocCompletion_typedef.js');
-goTo.marker('3');
-goTo.definition();
-verify.caretAtMarker('1');
-
-goTo.marker('4');
-goTo.definition();
-verify.caretAtMarker('2');
+verify.goToDefinition({
+ 3: "1",
+ 4: "2"
+});
diff --git a/tests/cases/fourslash/shims-pp/getDefinitionAtPosition.ts b/tests/cases/fourslash/shims-pp/getDefinitionAtPosition.ts
index 3aa31d1556c56..1679563942c51 100644
--- a/tests/cases/fourslash/shims-pp/getDefinitionAtPosition.ts
+++ b/tests/cases/fourslash/shims-pp/getDefinitionAtPosition.ts
@@ -14,16 +14,4 @@
////class fooCls implements /*remoteInterfaceReference*/remoteInterface { }
////var fooVar = /*remoteModuleReference*/remoteModule.foo;
-var markerList = [
- "remoteVariable",
- "remoteFunction",
- "remoteClass",
- "remoteInterface",
- "remoteModule",
-];
-
-markerList.forEach((marker) => {
- goTo.marker(marker + 'Reference');
- goTo.definition();
- verify.caretAtMarker(marker + 'Definition');
-});
+verify.goToDefinitionForMarkers("remoteVariable", "remoteFunction", "remoteClass", "remoteInterface", "remoteModule");
diff --git a/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts b/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts
index 78dfa94c5e44a..ad02bb9d85124 100644
--- a/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts
+++ b/tests/cases/fourslash/shims-pp/goToDefinitionTypeReferenceDirective.ts
@@ -8,6 +8,4 @@
//// ///
//// $.x;
-goTo.marker("1");
-goTo.definition();
-verify.caretAtMarker("0");
\ No newline at end of file
+verify.goToDefinition("1", "0");
diff --git a/tests/cases/fourslash/shims/getDefinitionAtPosition.ts b/tests/cases/fourslash/shims/getDefinitionAtPosition.ts
index 3aa31d1556c56..1679563942c51 100644
--- a/tests/cases/fourslash/shims/getDefinitionAtPosition.ts
+++ b/tests/cases/fourslash/shims/getDefinitionAtPosition.ts
@@ -14,16 +14,4 @@
////class fooCls implements /*remoteInterfaceReference*/remoteInterface { }
////var fooVar = /*remoteModuleReference*/remoteModule.foo;
-var markerList = [
- "remoteVariable",
- "remoteFunction",
- "remoteClass",
- "remoteInterface",
- "remoteModule",
-];
-
-markerList.forEach((marker) => {
- goTo.marker(marker + 'Reference');
- goTo.definition();
- verify.caretAtMarker(marker + 'Definition');
-});
+verify.goToDefinitionForMarkers("remoteVariable", "remoteFunction", "remoteClass", "remoteInterface", "remoteModule");
diff --git a/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts b/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts
index dc2fc356c57aa..4669b7f62e902 100644
--- a/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts
+++ b/tests/cases/fourslash/shims/goToDefinitionTypeReferenceDirective.ts
@@ -8,6 +8,4 @@
//// ///
//// $.x;
-goTo.marker("1");
-goTo.definition();
-verify.caretAtMarker("0");
\ No newline at end of file
+verify.goToDefinition("1", "0");
diff --git a/tests/cases/fourslash/tsxGoToDefinitionClasses.ts b/tests/cases/fourslash/tsxGoToDefinitionClasses.ts
index 11ff3afeb8ae3..9c54834534d34 100644
--- a/tests/cases/fourslash/tsxGoToDefinitionClasses.ts
+++ b/tests/cases/fourslash/tsxGoToDefinitionClasses.ts
@@ -14,10 +14,7 @@
//// var x = ;
//// var y = ;
-goTo.marker('c');
-goTo.definition();
-verify.caretAtMarker('ct');
-
-goTo.marker('p');
-goTo.definition();
-verify.caretAtMarker('pt');
+verify.goToDefinition({
+ c: "ct",
+ p: "pt"
+});
diff --git a/tests/cases/fourslash/tsxGoToDefinitionIntrinsics.ts b/tests/cases/fourslash/tsxGoToDefinitionIntrinsics.ts
index bbdf395e4789a..a82e813baa73d 100644
--- a/tests/cases/fourslash/tsxGoToDefinitionIntrinsics.ts
+++ b/tests/cases/fourslash/tsxGoToDefinitionIntrinsics.ts
@@ -15,15 +15,8 @@
//// var y = ;
//// var z = ;
-goTo.marker('ds');
-goTo.definition();
-verify.caretAtMarker('dt');
-
-goTo.marker('ss');
-goTo.definition();
-verify.caretAtMarker('st');
-
-goTo.marker('ps');
-goTo.definition();
-verify.caretAtMarker('pt');
-
+verify.goToDefinition({
+ ds: "dt",
+ ss: "st",
+ ps: "pt"
+});
diff --git a/tests/cases/fourslash_old/thisRefGotoDef.ts b/tests/cases/fourslash_old/thisRefGotoDef.ts
index 125b4acc985fe..ba16a6aa31c9a 100644
--- a/tests/cases/fourslash_old/thisRefGotoDef.ts
+++ b/tests/cases/fourslash_old/thisRefGotoDef.ts
@@ -9,6 +9,4 @@
//// }
//// }
-goTo.marker('ref');
-goTo.definition();
-verify.caretAtMarker('def');
\ No newline at end of file
+verify.goToDefinition("ref", "def");