diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts
index bd359230220..74ed3e307dd 100644
--- a/src/harness/fourslash.ts
+++ b/src/harness/fourslash.ts
@@ -525,6 +525,56 @@ namespace FourSlash {
}
}
+ public verifyGoToDefinitionIs(endMarker: string | string[]) {
+ this.verifyGoToDefinitionWorker(endMarker instanceof Array ? endMarker : [endMarker]);
+ }
+
+ public verifyGoToDefinition(startsAndEnds: (string | string[])[]) {
+ if (startsAndEnds.length % 2) {
+ throw new Error("verify.goToDefinition needs an even number of arguments.");
+ }
+
+ for (let i = 0; i < startsAndEnds.length; i += 2) {
+ const start = startsAndEnds[i];
+ const end = startsAndEnds[i + 1];
+
+ if (start instanceof Array) {
+ for (const s of start) {
+ this.verifyGoToDefinitionSingle(s, end);
+ }
+ }
+ else {
+ this.verifyGoToDefinitionSingle(start, end);
+ }
+ }
+ }
+
+ public verifyGoToDefinitionForMarkers(markerNames: string[]) {
+ for (const markerName of markerNames) {
+ this.verifyGoToDefinitionSingle(`${markerName}Reference`, `${markerName}Definition`);
+ }
+ }
+
+ private verifyGoToDefinitionSingle(start: string, end: string | string[]) {
+ this.goToMarker(start);
+ this.verifyGoToDefinitionWorker(end instanceof Array ? end : [end]);
+ }
+
+ 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 +1611,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 +1626,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 +1635,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 +1648,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 +2753,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 +2792,6 @@ namespace FourSlashInterface {
this.state.goToEOF();
}
- public definition(definitionIndex = 0) {
- this.state.goToDefinition(definitionIndex);
- }
-
public type(definitionIndex = 0) {
this.state.goToTypeDefinition(definitionIndex);
}
@@ -2885,22 +2896,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 +2943,22 @@ namespace FourSlashInterface {
this.state.verifyCurrentFileContent(text);
}
+ public goToDefinitionIs(endMarkers: string | string[]) {
+ this.state.verifyGoToDefinitionIs(endMarkers);
+ }
+
+ public goToDefinition(...startsAndEnds: (string | string[])[]) {
+ this.state.verifyGoToDefinition(startsAndEnds);
+ }
+
+ 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 970b87f8ec2..bf109ce8ef4 100644
--- a/tests/cases/fourslash/ambientShorthandGotoDefinition.ts
+++ b/tests/cases/fourslash/ambientShorthandGotoDefinition.ts
@@ -12,28 +12,22 @@
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 13abe094376..705cdd65583 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 d88e1ef688e..b82b0dc0465 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 59037e0de67..834bf1fd2da 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,18 @@ 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.
+ * Finally, `verify.goToDefinition("a", "b", "c", "d");` is just `verify.goToDefinition("a", "b"); verify.goToDefinition("c", "d");`.
+ */
+ goToDefinition(...startsAndEnds: (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 ce012d53aba..ae9d5fa86b6 100644
--- a/tests/cases/fourslash/goToDeclarationDecoratorOverloads.ts
+++ b/tests/cases/fourslash/goToDeclarationDecoratorOverloads.ts
@@ -13,10 +13,6 @@
//// @/*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 bac47638be6..7c0565c626a 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 f8141db44e3..2e73d834d42 100644
--- a/tests/cases/fourslash/goToDefinitionAlias.ts
+++ b/tests/cases/fourslash/goToDefinitionAlias.ts
@@ -23,20 +23,6 @@
//// 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 d17ed8d43b0..57885bed4e9 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 1b1c15a1153..dd0d91810c4 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 6ce9bf73f5d..ed7e0e9045c 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 168bdd5a86e..da9bf31f2c2 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 aa96400a397..4b774b8b0ee 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 dc5c362772c..bf698c0752d 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 d52243a6465..2899ad76dbc 100644
--- a/tests/cases/fourslash/goToDefinitionConstructorOverloads.ts
+++ b/tests/cases/fourslash/goToDefinitionConstructorOverloads.ts
@@ -9,14 +9,7 @@
////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 b0899a9576c..6511e87a57e 100644
--- a/tests/cases/fourslash/goToDefinitionDecorator.ts
+++ b/tests/cases/fourslash/goToDefinitionDecorator.ts
@@ -16,11 +16,6 @@
//// 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 3aa31d1556c..1679563942c 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 7287fde2d1d..96a65a22033 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 13abe094376..705cdd65583 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 06be8e676dd..866d21b3632 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 cd31f027895..afd3b4054a2 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 c8bbaa458e4..50d679f7e9e 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 5a6596caccb..ae9343a8f5b 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 46cafbb806c..03c3a23febc 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 dcaf4b1f021..4c82099ab20 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 03c36567dc0..5eab37e8393 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 43111c6763f..9e0c1b4986e 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 4d1c09efd7a..012689c984d 100644
--- a/tests/cases/fourslash/goToDefinitionFunctionOverloads.ts
+++ b/tests/cases/fourslash/goToDefinitionFunctionOverloads.ts
@@ -8,18 +8,8 @@
/////*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 d5f5a374c39..bd8c0260622 100644
--- a/tests/cases/fourslash/goToDefinitionFunctionOverloadsInClass.ts
+++ b/tests/cases/fourslash/goToDefinitionFunctionOverloadsInClass.ts
@@ -11,10 +11,6 @@
//// 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 023d7da8ce8..bf24e35307f 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 98a791d23ae..b7374d00f18 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 e5ab58d10cf..b0b8776ee37 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 5e9376d70cb..f8016464360 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 e0ef512dc41..4b6b019cfae 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 abd3bee998a..5add12ae0bc 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 c665946c3b1..21603cded42 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 d5bcc499c7c..86be4af3d85 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 1ee65e5644f..307a6813e33 100644
--- a/tests/cases/fourslash/goToDefinitionInMemberDeclaration.ts
+++ b/tests/cases/fourslash/goToDefinitionInMemberDeclaration.ts
@@ -19,35 +19,8 @@
//// }
////}
-
-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 2a12e49c5b7..343b5810df3 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 e6a763a98f1..585cc187e48 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 fea447a81fb..212c313e023 100644
--- a/tests/cases/fourslash/goToDefinitionLabels.ts
+++ b/tests/cases/fourslash/goToDefinitionLabels.ts
@@ -9,19 +9,10 @@
//// }
////}
-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 7b4bd0630d9..4b326b38a6c 100644
--- a/tests/cases/fourslash/goToDefinitionMethodOverloads.ts
+++ b/tests/cases/fourslash/goToDefinitionMethodOverloads.ts
@@ -18,27 +18,10 @@
////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 6539a025398..7b2cf6e7a85 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 9348ba05678..32b08ab710d 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 545172fb186..8523df2111b 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 de15c633e5f..63c23cfe46f 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 81e417b6c0f..90402b3f8e6 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 19840f3b228..c0bf2483594 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 1285932b3f2..6bbdaf3a189 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 69488026af0..0a30228790b 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 92f2761b61a..953b8ea47fe 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 5e906893719..54ebceec007 100644
--- a/tests/cases/fourslash/goToDefinitionShorthandProperty01.ts
+++ b/tests/cases/fourslash/goToDefinitionShorthandProperty01.ts
@@ -7,19 +7,8 @@
//// 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 1f8fe466277..0ecdcacdcd6 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 eb21b159f5a..7a0a93934e3 100644
--- a/tests/cases/fourslash/goToDefinitionShorthandProperty03.ts
+++ b/tests/cases/fourslash/goToDefinitionShorthandProperty03.ts
@@ -7,10 +7,6 @@
//// /*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 47c1909cf12..39aa8ecfca9 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 09900ff41be..b96a992aac1 100644
--- a/tests/cases/fourslash/goToDefinitionSourceUnit.ts
+++ b/tests/cases/fourslash/goToDefinitionSourceUnit.ts
@@ -16,9 +16,6 @@
// @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 54a2039b0a1..a7725bbcda7 100644
--- a/tests/cases/fourslash/goToDefinitionTaggedTemplateOverloads.ts
+++ b/tests/cases/fourslash/goToDefinitionTaggedTemplateOverloads.ts
@@ -7,10 +7,6 @@
/////*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 300e3423d81..6f03cb77284 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,7 @@
//// 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 40f1d1eb94c..0fb211c5057 100644
--- a/tests/cases/fourslash/goToDefinitionTypePredicate.ts
+++ b/tests/cases/fourslash/goToDefinitionTypePredicate.ts
@@ -5,12 +5,6 @@
//// 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 78dfa94c5e4..ad02bb9d851 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 8b7b19dc871..ceb1dc6d5be 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 65d7201aecf..82bd07e32f0 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 674d5f4b623..22ffb906e8e 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 337bae7d520..fde4d2319fe 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 eb17f9570c2..f69554098c5 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 576d3535af0..09996fcc2e9 100644
--- a/tests/cases/fourslash/goToDefinition_super.ts
+++ b/tests/cases/fourslash/goToDefinition_super.ts
@@ -19,15 +19,10 @@
//// }
////}
-// 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 7b210df3e0f..96e6f5b0c40 100644
--- a/tests/cases/fourslash/goToModuleAliasDefinition.ts
+++ b/tests/cases/fourslash/goToModuleAliasDefinition.ts
@@ -7,7 +7,6 @@
//// /*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");
+goTo.marker('1');
diff --git a/tests/cases/fourslash/hoverOverComment.ts b/tests/cases/fourslash/hoverOverComment.ts
index c0e585ca3b6..653eaedfcb7 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 47004d53b04..2a504d49036 100644
--- a/tests/cases/fourslash/javaScriptClass3.ts
+++ b/tests/cases/fourslash/javaScriptClass3.ts
@@ -15,10 +15,6 @@
//// 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 64ab03e6ab9..595549967e6 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 d99a3d8b5b5..638faa1d73e 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 97e5750241f..ea660aa89ec 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 51b17337486..390dc367959 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 c0c297f89e5..7889d185fcd 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 4db14611938..1074e206559 100644
--- a/tests/cases/fourslash/server/jsdocTypedefTagGoToDefinition.ts
+++ b/tests/cases/fourslash/server/jsdocTypedefTagGoToDefinition.ts
@@ -19,11 +19,6 @@
//// /** @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 3aa31d1556c..1679563942c 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 78dfa94c5e4..ad02bb9d851 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 3aa31d1556c..1679563942c 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 dc2fc356c57..4669b7f62e9 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 11ff3afeb8a..b6ee9ef484f 100644
--- a/tests/cases/fourslash/tsxGoToDefinitionClasses.ts
+++ b/tests/cases/fourslash/tsxGoToDefinitionClasses.ts
@@ -14,10 +14,6 @@
//// 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 bbdf395e478..e268de2b026 100644
--- a/tests/cases/fourslash/tsxGoToDefinitionIntrinsics.ts
+++ b/tests/cases/fourslash/tsxGoToDefinitionIntrinsics.ts
@@ -15,15 +15,7 @@
//// 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 125b4acc985..ba16a6aa31c 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");