From 1aafc553ddb8cc692cdcc169f4b6c6222575ad9f Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Wed, 22 Jun 2016 06:31:50 -0700 Subject: [PATCH 1/2] Change reference tests to verify actual ranges referenced and not just their count --- src/harness/fourslash.ts | 99 ++++++------ ...cellationWhenfindingAllRefsOnDefinition.ts | 15 +- .../findAllRefsForDefaultExport07.ts | 6 +- .../findAllRefsForDefaultExport08.ts | 5 +- ...dAllRefsForVariableInImplementsClause01.ts | 9 +- .../fourslash/findAllRefsInsideWithBlock.ts | 10 +- ...lRefsObjectBindingElementPropertyName05.ts | 2 +- .../fourslash/findAllRefsOnDecorators.ts | 13 +- .../fourslash/findAllRefsOnDefinition.ts | 9 +- .../fourslash/findAllRefsOnDefinition2.ts | 9 +- .../fourslash/findAllRefsOnImportAliases.ts | 24 +-- .../fourslash/findAllRefsOnImportAliases2.ts | 26 +-- .../findAllRefsThisKeywordMultipleFiles.ts | 2 +- ...dAllRefsWithShorthandPropertyAssignment.ts | 25 ++- ...AllRefsWithShorthandPropertyAssignment2.ts | 24 ++- .../findReferencesAcrossMultipleProjects.ts | 11 +- .../fourslash/findReferencesAfterEdit.ts | 14 +- .../fourslash/findReferencesJSXTagName.ts | 16 +- .../fourslash/findReferencesJSXTagName2.ts | 10 +- tests/cases/fourslash/fourslash.ts | 4 +- tests/cases/fourslash/hoverOverComment.ts | 2 +- tests/cases/fourslash/localGetReferences.ts | 150 ++++++++---------- tests/cases/fourslash/quickInfoForRequire.ts | 2 +- ...referenceInParameterPropertyDeclaration.ts | 24 ++- .../cases/fourslash/referencesBloomFilters.ts | 13 +- .../fourslash/referencesBloomFilters2.ts | 13 +- .../fourslash/referencesBloomFilters3.ts | 10 +- .../cases/fourslash/referencesForAmbients.ts | 33 ++-- .../fourslash/referencesForClassLocal.ts | 12 +- .../fourslash/referencesForClassMembers.ts | 30 +--- ...esForClassMembersExtendingAbstractClass.ts | 30 +--- ...cesForClassMembersExtendingGenericClass.ts | 30 +--- .../fourslash/referencesForClassParameter.ts | 12 +- ...ontextuallyTypedObjectLiteralProperties.ts | 22 ++- ...ncesForContextuallyTypedUnionProperties.ts | 29 ++-- ...cesForContextuallyTypedUnionProperties2.ts | 19 +-- tests/cases/fourslash/referencesForEnums.ts | 24 +-- .../fourslash/referencesForExportedValues.ts | 11 +- .../referencesForExternalModuleNames.ts | 10 +- .../referencesForFunctionOverloads.ts | 15 +- .../referencesForFunctionParameter.ts | 12 +- tests/cases/fourslash/referencesForGlobals.ts | 14 +- .../cases/fourslash/referencesForGlobals2.ts | 10 +- .../cases/fourslash/referencesForGlobals3.ts | 10 +- .../cases/fourslash/referencesForGlobals4.ts | 10 +- .../cases/fourslash/referencesForGlobals5.ts | 10 +- .../referencesForGlobalsInExternalModule.ts | 21 ++- .../referencesForIllegalAssignment.ts | 17 +- tests/cases/fourslash/referencesForImports.ts | 20 +-- .../fourslash/referencesForIndexProperty.ts | 14 +- .../fourslash/referencesForIndexProperty2.ts | 6 +- .../fourslash/referencesForIndexProperty3.ts | 12 +- .../referencesForInheritedProperties.ts | 13 +- .../referencesForInheritedProperties2.ts | 13 +- .../referencesForInheritedProperties3.ts | 13 +- .../referencesForInheritedProperties4.ts | 13 +- .../referencesForInheritedProperties5.ts | 17 +- .../referencesForInheritedProperties6.ts | 30 +--- .../referencesForInheritedProperties7.ts | 50 +++--- .../referencesForInheritedProperties8.ts | 27 +--- .../referencesForInheritedProperties9.ts | 17 +- tests/cases/fourslash/referencesForLabel.ts | 22 +-- tests/cases/fourslash/referencesForLabel2.ts | 6 +- tests/cases/fourslash/referencesForLabel3.ts | 6 +- tests/cases/fourslash/referencesForLabel4.ts | 10 +- tests/cases/fourslash/referencesForLabel5.ts | 27 +--- tests/cases/fourslash/referencesForLabel6.ts | 14 +- .../referencesForMergedDeclarations.ts | 21 ++- .../referencesForMergedDeclarations2.ts | 15 +- .../referencesForMergedDeclarations3.ts | 36 ++--- .../referencesForMergedDeclarations4.ts | 24 ++- .../referencesForMergedDeclarations5.ts | 12 +- .../referencesForMergedDeclarations6.ts | 7 +- .../referencesForMergedDeclarations7.ts | 12 +- .../referencesForMergedDeclarations8.ts | 7 +- .../cases/fourslash/referencesForNoContext.ts | 8 +- ...eferencesForNumericLiteralPropertyNames.ts | 13 +- .../referencesForObjectLiteralProperties.ts | 14 +- .../cases/fourslash/referencesForOverrides.ts | 50 +++--- .../referencesForPropertiesOfGenericType.ts | 10 +- tests/cases/fourslash/referencesForStatic.ts | 25 ++- tests/cases/fourslash/referencesInComment.ts | 2 +- tests/cases/fourslash/remoteGetReferences.ts | 62 +++----- 83 files changed, 582 insertions(+), 994 deletions(-) diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 695e19b4667..8347a0ae8a4 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -730,29 +730,6 @@ namespace FourSlash { } } - public verifyReferencesCountIs(count: number, localFilesOnly = true) { - const references = this.getReferencesAtCaret(); - let referencesCount = 0; - - if (localFilesOnly) { - const localFiles = this.testData.files.map(file => file.fileName); - // Count only the references in local files. Filter the ones in lib and other files. - ts.forEach(references, entry => { - if (localFiles.some((fileName) => fileName === entry.fileName)) { - referencesCount++; - } - }); - } - else { - referencesCount = references && references.length || 0; - } - - if (referencesCount !== count) { - const condition = localFilesOnly ? "excluding libs" : "including libs"; - this.raiseError("Expected references count (" + condition + ") to be " + count + ", but is actually " + referencesCount); - } - } - public verifyReferencesAre(expectedReferences: Range[]) { const actualReferences = this.getReferencesAtCaret() || []; @@ -760,7 +737,7 @@ namespace FourSlash { // Find the unaccounted-for reference. for (const actual of actualReferences) { if (!ts.forEach(expectedReferences, r => r.start === actual.textSpan.start)) { - this.raiseError(`A reference ${actual} is unaccounted for.`); + this.raiseError(`A reference ${stringify(actual)} is unaccounted for.`); } } // Probably will never reach here. @@ -769,7 +746,7 @@ namespace FourSlash { for (const reference of expectedReferences) { const {fileName, start, end} = reference; - if (reference.marker) { + if (reference.marker && reference.marker.data) { const {isWriteAccess, isDefinition} = reference.marker.data; this.verifyReferencesWorker(actualReferences, fileName, start, end, isWriteAccess, isDefinition); } @@ -793,12 +770,8 @@ namespace FourSlash { } } - public verifyReferencesAtPositionListContains(fileName: string, start: number, end: number, isWriteAccess?: boolean, isDefinition?: boolean) { - const references = this.getReferencesAtCaret(); - if (!references || references.length === 0) { - this.raiseError("verifyReferencesAtPositionListContains failed - found 0 references, expected at least one."); - } - this.verifyReferencesWorker(references, fileName, start, end, isWriteAccess, isDefinition); + public verifyRangesWithSameTextReferenceEachOther(ranges?: Range[]) { + ts.forEachValue(this.rangesByText(), ranges => this.verifyRangesReferenceEachOther(ranges)); } private verifyReferencesWorker(references: ts.ReferenceEntry[], fileName: string, start: number, end: number, isWriteAccess?: boolean, isDefinition?: boolean) { @@ -817,7 +790,6 @@ namespace FourSlash { const missingItem = { fileName, start, end, isWriteAccess, isDefinition }; this.raiseError(`verifyReferencesAtPositionListContains failed - could not find the item: ${stringify(missingItem)} in the returned list: (${stringify(references)})`); - } private getMemberListAtCaret() { @@ -1541,19 +1513,32 @@ namespace FourSlash { } private updateMarkersForEdit(fileName: string, minChar: number, limChar: number, text: string) { - for (let i = 0; i < this.testData.markers.length; i++) { - const marker = this.testData.markers[i]; + for (const marker of this.testData.markers) { if (marker.fileName === fileName) { - if (marker.position > minChar) { - if (marker.position < limChar) { - // Marker is inside the edit - mark it as invalidated (?) - marker.position = -1; - } - else { - // Move marker back/forward by the appropriate amount - marker.position += (minChar - limChar) + text.length; - } + marker.position = updatePosition(marker.position); + } + } + + for (const range of this.testData.ranges) { + if (range.fileName === fileName) { + range.start = updatePosition(range.start); + range.end = updatePosition(range.end); + } + } + + function updatePosition(position: number) { + if (position > minChar) { + if (position < limChar) { + // Inside the edit - mark it as invalidated (?) + return -1; } + else { + // Move marker back/forward by the appropriate amount + return position + (minChar - limChar) + text.length; + } + } + else { + return position; } } } @@ -1648,8 +1633,20 @@ namespace FourSlash { } public getRanges(): Range[] { - // Return a copy of the list - return this.testData.ranges.slice(0); + return this.testData.ranges; + } + + public rangesByText(): ts.Map { + const result: ts.Map = {}; + for (const range of this.getRanges()) { + const text = this.rangeText(range); + (ts.getProperty(result, text) || (result[text] = [])).push(range); + } + return result; + } + + private rangeText({fileName, start, end}: Range, more = false): string { + return this.getFileContent(fileName).slice(start, end); } public verifyCaretAtMarker(markerName = "") { @@ -2772,6 +2769,10 @@ namespace FourSlashInterface { return this.state.getRanges(); } + public rangesByText(): ts.Map { + return this.state.rangesByText(); + } + public markerByName(s: string): FourSlash.Marker { return this.state.getMarkerByName(s); } @@ -2970,10 +2971,6 @@ namespace FourSlashInterface { this.state.verifyGetEmitOutputContentsForCurrentFile(expected); } - public referencesCountIs(count: number) { - this.state.verifyReferencesCountIs(count, /*localFilesOnly*/ false); - } - public referencesAre(ranges: FourSlash.Range[]) { this.state.verifyReferencesAre(ranges); } @@ -2986,6 +2983,10 @@ namespace FourSlashInterface { this.state.verifyRangesReferenceEachOther(ranges); } + public rangesWithSameTextReferenceEachOther(ranges?: FourSlash.Range[]) { + this.state.verifyRangesWithSameTextReferenceEachOther(ranges); + } + public currentParameterHelpArgumentNameIs(name: string) { this.state.verifyCurrentParameterHelpName(name); } diff --git a/tests/cases/fourslash/cancellationWhenfindingAllRefsOnDefinition.ts b/tests/cases/fourslash/cancellationWhenfindingAllRefsOnDefinition.ts index 48a698c5a47..d3d18b2dabb 100644 --- a/tests/cases/fourslash/cancellationWhenfindingAllRefsOnDefinition.ts +++ b/tests/cases/fourslash/cancellationWhenfindingAllRefsOnDefinition.ts @@ -7,7 +7,7 @@ //// //// } //// -//// public /*1*/start(){ +//// public /**/[|start|](){ //// return this; //// } //// @@ -20,19 +20,14 @@ ////import Second = require("./findAllRefsOnDefinition-import"); //// ////var second = new Second.Test() -////second.start(); +////second.[|start|](); ////second.stop(); -goTo.file("findAllRefsOnDefinition-import.ts"); -goTo.marker("1"); - -verify.referencesCountIs(2); +verify.rangesReferenceEachOther(); cancellation.setCancelled(); -goTo.marker("1"); -verifyOperationIsCancelled(() => verify.referencesCountIs(0) ); +verifyOperationIsCancelled(() => verify.rangesReferenceEachOther()); // verify that internal state is still correct cancellation.resetCancelled(); -goTo.marker("1"); -verify.referencesCountIs(2); +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/findAllRefsForDefaultExport07.ts b/tests/cases/fourslash/findAllRefsForDefaultExport07.ts index 9534a671316..88d0a775026 100644 --- a/tests/cases/fourslash/findAllRefsForDefaultExport07.ts +++ b/tests/cases/fourslash/findAllRefsForDefaultExport07.ts @@ -8,11 +8,9 @@ //// ////var y = DefaultExportedFunction(); //// -////namespace /**/DefaultExportedFunction { +////namespace [|DefaultExportedFunction|] { ////} // The namespace and function do not merge, // so the namespace should be all alone. - -goTo.marker(); -verify.referencesCountIs(1); +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/findAllRefsForDefaultExport08.ts b/tests/cases/fourslash/findAllRefsForDefaultExport08.ts index 80eabbe53f4..b7ae7f4d534 100644 --- a/tests/cases/fourslash/findAllRefsForDefaultExport08.ts +++ b/tests/cases/fourslash/findAllRefsForDefaultExport08.ts @@ -7,11 +7,10 @@ //// ////var y = new DefaultExportedClass; //// -////namespace /**/DefaultExportedClass { +////namespace [|DefaultExportedClass|] { ////} // The namespace and class do not merge, // so the namespace should be all alone. -goTo.marker(); -verify.referencesCountIs(1); +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/findAllRefsForVariableInImplementsClause01.ts b/tests/cases/fourslash/findAllRefsForVariableInImplementsClause01.ts index 93f8cec8109..f8326eade58 100644 --- a/tests/cases/fourslash/findAllRefsForVariableInImplementsClause01.ts +++ b/tests/cases/fourslash/findAllRefsForVariableInImplementsClause01.ts @@ -1,10 +1,7 @@ /// - ////var Base = class { }; -////class C extends Base implements [|Base|] { } +////class C extends Base implements /**/Base { } -let ranges = test.ranges(); -for (let range of ranges) { - verify.referencesCountIs(0); -} \ No newline at end of file +goTo.marker(); +verify.referencesAre([]); diff --git a/tests/cases/fourslash/findAllRefsInsideWithBlock.ts b/tests/cases/fourslash/findAllRefsInsideWithBlock.ts index fc8a94eaa2d..c95925ff863 100644 --- a/tests/cases/fourslash/findAllRefsInsideWithBlock.ts +++ b/tests/cases/fourslash/findAllRefsInsideWithBlock.ts @@ -1,16 +1,12 @@ /// -////var x = 0; +////var [|x|] = 0; //// ////with ({}) { //// var y = x; // Reference of x here should not be picked //// /*2*/y++; // also reference for y should be ignored ////} //// -////x = /*1*/x + 1; +////[|x|] = [|x|] + 1; -goTo.marker('1'); -verify.referencesCountIs(3); - -goTo.marker('2'); -verify.referencesCountIs(0); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName05.ts b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName05.ts index f7e3b80fe45..e33c73ff838 100644 --- a/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName05.ts +++ b/tests/cases/fourslash/findAllRefsObjectBindingElementPropertyName05.ts @@ -10,4 +10,4 @@ ////} goTo.marker(); -verify.referencesCountIs(0); \ No newline at end of file +verify.referencesAre([]); \ No newline at end of file diff --git a/tests/cases/fourslash/findAllRefsOnDecorators.ts b/tests/cases/fourslash/findAllRefsOnDecorators.ts index 3225bc108ce..b58e15b9571 100644 --- a/tests/cases/fourslash/findAllRefsOnDecorators.ts +++ b/tests/cases/fourslash/findAllRefsOnDecorators.ts @@ -1,19 +1,16 @@ /// // @Filename: a.ts -////function decorator(target) { +////function [|decorator|](target) { //// return target; ////} -////decorator(); +////[|decorator|](); // @Filename: b.ts -////@deco/*1*/rator @decorator("again") +////@[|decorator|] @[|decorator|]("again") ////class C { -//// @decorator +//// @[|decorator|] //// method() {} ////} -goTo.file("b.ts"); -goTo.marker("1"); - -verify.referencesCountIs(5); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/findAllRefsOnDefinition.ts b/tests/cases/fourslash/findAllRefsOnDefinition.ts index a25a6e1285f..cb829807602 100644 --- a/tests/cases/fourslash/findAllRefsOnDefinition.ts +++ b/tests/cases/fourslash/findAllRefsOnDefinition.ts @@ -7,7 +7,7 @@ //// //// } //// -//// public /*1*/start(){ +//// public [|start|](){ //// return this; //// } //// @@ -20,10 +20,7 @@ ////import Second = require("./findAllRefsOnDefinition-import"); //// ////var second = new Second.Test() -////second.start(); +////second.[|start|](); ////second.stop(); -goTo.file("findAllRefsOnDefinition-import.ts"); -goTo.marker("1"); - -verify.referencesCountIs(2); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/findAllRefsOnDefinition2.ts b/tests/cases/fourslash/findAllRefsOnDefinition2.ts index c9a116d4622..8edfd7f8cd7 100644 --- a/tests/cases/fourslash/findAllRefsOnDefinition2.ts +++ b/tests/cases/fourslash/findAllRefsOnDefinition2.ts @@ -3,7 +3,7 @@ //@Filename: findAllRefsOnDefinition2-import.ts ////export module Test{ //// -//// export interface /*1*/start { } +//// export interface [|start|] { } //// //// export interface stop { } ////} @@ -11,10 +11,7 @@ //@Filename: findAllRefsOnDefinition2.ts ////import Second = require("./findAllRefsOnDefinition2-import"); //// -////var start: Second.Test.start; +////var start: Second.Test.[|start|]; ////var stop: Second.Test.stop; -goTo.file("findAllRefsOnDefinition2-import.ts"); -goTo.marker("1"); - -verify.referencesCountIs(2); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/findAllRefsOnImportAliases.ts b/tests/cases/fourslash/findAllRefsOnImportAliases.ts index 8460e3f39b2..cd258e80316 100644 --- a/tests/cases/fourslash/findAllRefsOnImportAliases.ts +++ b/tests/cases/fourslash/findAllRefsOnImportAliases.ts @@ -1,29 +1,15 @@ /// //@Filename: a.ts -////export class /*1*/Class{ +////export class [|Class|] { ////} //@Filename: b.ts -////import { /*2*/Class } from "./a"; +////import { [|Class|] } from "./a"; //// -////var c = new /*3*/Class(); +////var c = new [|Class|](); //@Filename: c.ts -////export { /*4*/Class } from "./a"; - -goTo.file("a.ts"); -goTo.marker("1"); -verify.referencesCountIs(4); - -goTo.file("b.ts"); -goTo.marker("2"); -verify.referencesCountIs(4); - -goTo.marker("3"); -verify.referencesCountIs(4); - -goTo.file("c.ts"); -goTo.marker("4"); -verify.referencesCountIs(4); +////export { [|Class|] } from "./a"; +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/findAllRefsOnImportAliases2.ts b/tests/cases/fourslash/findAllRefsOnImportAliases2.ts index ab7a99e1e74..67c4d14b5d9 100644 --- a/tests/cases/fourslash/findAllRefsOnImportAliases2.ts +++ b/tests/cases/fourslash/findAllRefsOnImportAliases2.ts @@ -1,31 +1,15 @@ /// //@Filename: a.ts -////export class /*1*/Class{ +////export class [|Class|] { ////} //@Filename: b.ts -////import { /*2*/Class as /*3*/C2} from "./a"; +////import { [|Class|] as [|C2|] } from "./a"; //// -////var c = new C2(); +////var c = new [|C2|](); //@Filename: c.ts -////export { /*4*/Class as /*5*/C3 } from "./a"; +////export { [|Class|] as [|C3|] } from "./a"; -goTo.file("a.ts"); -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.file("b.ts"); -goTo.marker("2"); -verify.referencesCountIs(3); - -goTo.marker("3"); -verify.referencesCountIs(2); - -goTo.file("c.ts"); -goTo.marker("4"); -verify.referencesCountIs(3); - -goTo.marker("5"); -verify.referencesCountIs(1); +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/findAllRefsThisKeywordMultipleFiles.ts b/tests/cases/fourslash/findAllRefsThisKeywordMultipleFiles.ts index 4b9f7a450ec..873324fae21 100644 --- a/tests/cases/fourslash/findAllRefsThisKeywordMultipleFiles.ts +++ b/tests/cases/fourslash/findAllRefsThisKeywordMultipleFiles.ts @@ -15,4 +15,4 @@ goTo.marker(); // TODO (drosen): The CURRENT behavior is that findAllRefs doesn't work on 'this' or 'super' keywords. // This should change down the line. -verify.referencesCountIs(0); \ No newline at end of file +verify.referencesAre([]); \ No newline at end of file diff --git a/tests/cases/fourslash/findAllRefsWithShorthandPropertyAssignment.ts b/tests/cases/fourslash/findAllRefsWithShorthandPropertyAssignment.ts index 7a1f7a0225f..0dc050602c5 100644 --- a/tests/cases/fourslash/findAllRefsWithShorthandPropertyAssignment.ts +++ b/tests/cases/fourslash/findAllRefsWithShorthandPropertyAssignment.ts @@ -1,19 +1,14 @@ /// -//// var /*1*/name = "Foo"; +//// var [|name|] = "Foo"; //// -//// var obj = { /*2*/name }; -//// var obj1 = { /*3*/name:name }; -//// obj./*4*/name; +//// var obj = { [|name|] }; +//// var obj1 = { [|name|]:[|name|] }; +//// obj.[|name|]; -goTo.marker('1'); -verify.referencesCountIs(3); - -goTo.marker('2'); -verify.referencesCountIs(4); - -goTo.marker('3'); -verify.referencesCountIs(1); - -goTo.marker('4'); -verify.referencesCountIs(2); +const [r0, r1, r2, r3, r4] = test.ranges(); +verify.referencesOf(r0, [r0, r1, r3]); +verify.referencesOf(r1, [r0, r1, r3, r4]); +verify.referencesOf(r2, [r2]); +verify.referencesOf(r3, [r0, r1, r3]); +verify.referencesOf(r4, [r1, r4]); diff --git a/tests/cases/fourslash/findAllRefsWithShorthandPropertyAssignment2.ts b/tests/cases/fourslash/findAllRefsWithShorthandPropertyAssignment2.ts index b3f283f1272..59ba87fabb6 100644 --- a/tests/cases/fourslash/findAllRefsWithShorthandPropertyAssignment2.ts +++ b/tests/cases/fourslash/findAllRefsWithShorthandPropertyAssignment2.ts @@ -1,22 +1,16 @@ /// -//// var /*1*/dx = "Foo"; +//// var [|dx|] = "Foo"; //// -//// module M { export var /*2*/dx; } +//// module M { export var [|dx|]; } //// module M { //// var z = 100; -//// export var y = { /*3*/dx, z }; +//// export var y = { [|dx|], z }; //// } -//// M.y./*4*/dx; +//// M.y.[|dx|]; -goTo.marker('1'); -verify.referencesCountIs(1); - -goTo.marker('2'); -verify.referencesCountIs(2); - -goTo.marker('3'); -verify.referencesCountIs(3); - -goTo.marker('4'); -verify.referencesCountIs(2); \ No newline at end of file +const [r0, r1, r2, r3] = test.ranges(); +verify.referencesOf(r0, [r0]); +verify.referencesOf(r1, [r1, r2]); +verify.referencesOf(r2, [r1, r2, r3]); +verify.referencesOf(r3, [r2, r3]); diff --git a/tests/cases/fourslash/findReferencesAcrossMultipleProjects.ts b/tests/cases/fourslash/findReferencesAcrossMultipleProjects.ts index 0ef7745f8f9..a9915fc4b3d 100644 --- a/tests/cases/fourslash/findReferencesAcrossMultipleProjects.ts +++ b/tests/cases/fourslash/findReferencesAcrossMultipleProjects.ts @@ -1,17 +1,14 @@ /// //@Filename: a.ts -////var /*1*/x: number; +////var [|x|]: number; //@Filename: b.ts /////// -////x++; +////[|x|]++; //@Filename: c.ts /////// -////x++; +////[|x|]++; -goTo.file("a.ts"); -goTo.marker("1"); - -verify.referencesCountIs(3); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/findReferencesAfterEdit.ts b/tests/cases/fourslash/findReferencesAfterEdit.ts index 5eca1a3b8f2..6140ca9a767 100644 --- a/tests/cases/fourslash/findReferencesAfterEdit.ts +++ b/tests/cases/fourslash/findReferencesAfterEdit.ts @@ -2,21 +2,19 @@ // @Filename: a.ts ////interface A { -//// foo: string; +//// [|foo|]: string; ////} // @Filename: b.ts /////// -/////*0*/ +/////**/ ////function foo(x: A) { -//// x.f/*1*/oo +//// x.[|foo|] ////} -goTo.marker("1"); -verify.referencesCountIs(2); +verify.rangesReferenceEachOther(); -goTo.marker("0"); +goTo.marker(""); edit.insert("\r\n"); -goTo.marker("1"); -verify.referencesCountIs(2); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/findReferencesJSXTagName.ts b/tests/cases/fourslash/findReferencesJSXTagName.ts index a6170b4fc8f..24760046eb2 100644 --- a/tests/cases/fourslash/findReferencesJSXTagName.ts +++ b/tests/cases/fourslash/findReferencesJSXTagName.ts @@ -1,22 +1,14 @@ /// // @Filename: index.tsx -////import { /*1*/SubmissionComp } from "./RedditSubmission" +////import { [|SubmissionComp|] } from "./RedditSubmission" ////function displaySubreddit(subreddit: string) { //// let components = submissions -//// .map((value, index) => ); +//// .map((value, index) => <[|SubmissionComp|] key={ index } elementPosition= { index } {...value.data} />); ////} // @Filename: RedditSubmission.ts -////export const /*3*/SubmissionComp = (submission: SubmissionProps) => +////export const [|SubmissionComp|] = (submission: SubmissionProps) => ////
; - -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.marker("2"); -verify.referencesCountIs(3); - -goTo.marker("3"); -verify.referencesCountIs(3); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/findReferencesJSXTagName2.ts b/tests/cases/fourslash/findReferencesJSXTagName2.ts index a7bb7fd97dd..4ce08647c52 100644 --- a/tests/cases/fourslash/findReferencesJSXTagName2.ts +++ b/tests/cases/fourslash/findReferencesJSXTagName2.ts @@ -1,11 +1,7 @@ /// // @Filename: index.tsx -////const /*1*/obj = {Component: () =>
}; -////const element = ; +////const [|obj|] = {Component: () =>
}; +////const element = <[|obj|].Component/>; -goTo.marker("1"); -verify.referencesCountIs(2); - -goTo.marker("2"); -verify.referencesCountIs(2); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts index dd8a61ac458..274eedc1a3e 100644 --- a/tests/cases/fourslash/fourslash.ts +++ b/tests/cases/fourslash/fourslash.ts @@ -100,6 +100,7 @@ declare namespace FourSlashInterface { markers(): Marker[]; marker(name?: string): Marker; ranges(): Range[]; + rangesByText(): { [text: string]: Range[] }; markerByName(s: string): Marker; } class goTo { @@ -152,7 +153,6 @@ declare namespace FourSlashInterface { currentFileContentIs(text: string): void; verifyGetEmitOutputForCurrentFile(expected: string): void; verifyGetEmitOutputContentsForCurrentFile(expected: ts.OutputFile[]): void; - referencesCountIs(count: number): void; /** * Asserts that the given ranges are the references from the current position. * If ranges have markers, those markers may have "isDefinition" and "isWriteAccess" data @@ -170,6 +170,8 @@ declare namespace FourSlashInterface { * If `ranges` is omitted, this is `test.ranges()`. */ rangesReferenceEachOther(ranges?: Range[]): void; + //doc + rangesWithSameTextReferenceEachOther(ranges?: Range[]): void; currentParameterHelpArgumentNameIs(name: string): void; currentParameterSpanIs(parameter: string): void; currentParameterHelpArgumentDocCommentIs(docComment: string): void; diff --git a/tests/cases/fourslash/hoverOverComment.ts b/tests/cases/fourslash/hoverOverComment.ts index a9549a932f7..c0e585ca3b6 100644 --- a/tests/cases/fourslash/hoverOverComment.ts +++ b/tests/cases/fourslash/hoverOverComment.ts @@ -8,4 +8,4 @@ goTo.marker(); verify.quickInfoIs(""); verify.verifyDefinitionsName("", ""); verify.typeDefinitionCountIs(0); -verify.referencesCountIs(0); +verify.referencesAre([]); diff --git a/tests/cases/fourslash/localGetReferences.ts b/tests/cases/fourslash/localGetReferences.ts index e5873efeeb4..ada4947acde 100644 --- a/tests/cases/fourslash/localGetReferences.ts +++ b/tests/cases/fourslash/localGetReferences.ts @@ -2,35 +2,39 @@ // @Filename: localGetReferences_1.ts ////// Comment Refence Test: g/*1*/lobalVar -////var g/*3*/lobalVar: n/*2*/umber = 2; +////// References to a variable declared in global. +////var [|globalVar|]: n/*2*/umber = 2; //// ////class fooCls { -//// static clsS/*5*/Var = 1; -//// //Declare -//// cls/*4*/Var = 1; +//// // References to static variable declared in a class. +//// static [|clsSVar|] = 1; +//// // References to a variable declared in a class. +//// [|clsVar|] = 1; //// -//// constructor (public clsParam: number) { +//// constructor (public [|clsParam|]: number) { //// //Increments -//// globalVar++; -//// this.clsVar++; -//// fooCls.clsSVar++; -//// this.cls/*7*/Param++; +//// [|globalVar|]++; +//// this.[|clsVar|]++; +//// fooCls.[|clsSVar|]++; +//// // References to a class parameter. +//// this.[|clsParam|]++; //// modTest.modVar++; //// } ////} //// -////function foo(/*8*/x: number) { -//// //Declare -//// var fn/*6*/Var = 1; +////// References to a function parameter. +////function [|foo|]([|x|]: number) { +//// // References to a variable declared in a function. +//// var [|fnVar|] = 1; //// //// //Increments -//// fooCls.clsSVar++; -//// globalVar++; +//// fooCls.[|clsSVar|]++; +//// [|globalVar|]++; //// modTest.modVar++; -//// fnVar++; +//// [|fnVar|]++; //// //// //Return -//// return x++; +//// return [|x|]++; ////} //// ////module modTest { @@ -38,25 +42,25 @@ //// export var modVar:number; //// //// //Increments -//// globalVar++; -//// fooCls.clsSVar++; +//// [|globalVar|]++; +//// fooCls.[|clsSVar|]++; //// modVar++; //// //// class testCls { -//// static boo = foo; +//// static boo = [|foo|]; //// } //// //// function testFn(){ -//// static boo = foo; +//// static boo = [|foo|]; //// //// //Increments -//// globalVar++; -//// fooCls.clsSVar++; +//// [|globalVar|]++; +//// fooCls.[|clsSVar|]++; //// modVar++; //// } //// //// module testMod { -//// var boo = foo; +//// var boo = [|foo|]; //// } ////} //// @@ -64,24 +68,27 @@ ////var clsTest: fooCls; //// //////Arguments -////clsTest = new fooCls(globalV/*10*/ar); -////foo(glo/*9*/balVar); +////// References to a class argument. +////clsTest = new fooCls([|globalVar|]); +////// References to a function argument. +////[|foo|]([|globalVar|]); //// //////Increments -////fooCls.clsSVar++; +////fooCls.[|clsSVar|]++; ////modTest.modVar++; -////globalVar = globalVar + globalVar; +////[|globalVar|] = [|globalVar|] + [|globalVar|]; //// //////ETC - Other cases -////globalVar = 3; -/////*11*/foo = foo + 1; -/////*12*/err = err++; -/////*13*/ +////[|globalVar|] = 3; +////// References to illegal assignment. +////[|foo|] = [|foo|] + 1; +/////*3*/err = err++; +/////*4*/ //////Shadowed fn Parameter -////function shdw(globa/*14*/lVar: number) { +////function shdw([|{| "shadow": true |}globalVar|]: number) { //// //Increments -//// globalVar++; -//// return globalVar; +//// [|{| "shadow": true |}globalVar|]++; +//// return [|{| "shadow": true |}globalVar|]; ////} //// //////Remotes @@ -110,11 +117,12 @@ ////array.forEach( //// //// -////function(str) { +////function([|str|]) { //// //// //// -//// return /*15*/str + " "; +//// // Reference misses function parameter. +//// return [|str|] + " "; //// ////}); @@ -162,7 +170,7 @@ //// class remotetestCls { //// static remoteboo = remotefoo; //// } -//// +////` //// function remotetestFn(){ //// static remoteboo = remotefoo; //// @@ -179,60 +187,30 @@ // References to comment. goTo.marker("1"); -verify.referencesCountIs(0); +verify.referencesAre([]); // References to type. goTo.marker("2"); -verify.referencesCountIs(0); - -// References to a variable declared in global. -goTo.marker("3"); -verify.referencesCountIs(11); - -// References to a variable declared in a class. -goTo.marker("4"); -verify.referencesCountIs(2); - -// References to static variable declared in a class. -goTo.marker("5"); -verify.referencesCountIs(6); - -// References to a variable declared in a function. -goTo.marker("6"); -verify.referencesCountIs(2); - -// References to a class parameter. -goTo.marker("7"); -verify.referencesCountIs(2); - -// References to a function parameter. -goTo.marker("8"); -verify.referencesCountIs(2); - -// References to a function argument. -goTo.marker("9"); -verify.referencesCountIs(11); - -// References to a class argument. -goTo.marker("10"); -verify.referencesCountIs(11); - -// References to illegal assignment. -goTo.marker("11"); -verify.referencesCountIs(7); +verify.referencesAre([]); // References to unresolved symbol. -goTo.marker("12"); -verify.referencesCountIs(0); +goTo.marker("3"); +verify.referencesAre([]); // References to no context. -goTo.marker("13"); -verify.referencesCountIs(0); +goTo.marker("4"); +verify.referencesAre([]); -// References to shadowed function parameter. -goTo.marker("14"); -verify.referencesCountIs(3); - -// Reference misses function parameter. -goTo.marker("15"); -verify.referencesCountIs(2); \ No newline at end of file +const rangesByText = test.rangesByText(); +for (const text in rangesByText) { + const ranges = rangesByText[text]; + if (text === "globalVar") { + function isShadow(r) { + return r.marker && r.marker.data && r.marker.data.shadow; + } + verify.rangesReferenceEachOther(ranges.filter(isShadow)); + verify.rangesReferenceEachOther(ranges.filter(r => !isShadow(r))); + } else { + verify.rangesReferenceEachOther(ranges); + } +} diff --git a/tests/cases/fourslash/quickInfoForRequire.ts b/tests/cases/fourslash/quickInfoForRequire.ts index 8e714c08736..cb5a0b6e8ec 100644 --- a/tests/cases/fourslash/quickInfoForRequire.ts +++ b/tests/cases/fourslash/quickInfoForRequire.ts @@ -8,4 +8,4 @@ goTo.marker('1'); verify.quickInfoIs('module a'); -verify.referencesCountIs(0); \ No newline at end of file +verify.referencesAre([]); \ No newline at end of file diff --git a/tests/cases/fourslash/referenceInParameterPropertyDeclaration.ts b/tests/cases/fourslash/referenceInParameterPropertyDeclaration.ts index 4e86e7a4915..68a9f73b1d6 100644 --- a/tests/cases/fourslash/referenceInParameterPropertyDeclaration.ts +++ b/tests/cases/fourslash/referenceInParameterPropertyDeclaration.ts @@ -2,23 +2,19 @@ // @Filename: file1.ts //// class Foo { -//// constructor(private /*0*/privateParam: number, -//// public /*1*/publicParam: string, -//// protected /*2*/protectedParam: boolean) { +//// constructor(private [|privateParam|]: number, +//// public [|publicParam|]: string, +//// protected [|protectedParam|]: boolean) { //// -//// let localPrivate = /*3*/privateParam; -//// this./*4*/privateParam += 10; +//// let localPrivate = [|privateParam|]; +//// this.[|privateParam|] += 10; //// -//// let localPublic = /*5*/publicParam; -//// this./*6*/publicParam += " Hello!"; +//// let localPublic = [|publicParam|]; +//// this.[|publicParam|] += " Hello!"; //// -//// let localProtected = /*7*/protectedParam; -//// this./*8*/protectedParam = false; +//// let localProtected = [|protectedParam|]; +//// this.[|protectedParam|] = false; //// } //// } -let markers = test.markers() -for (let marker of markers) { - goTo.position(marker.position); - verify.referencesCountIs(3); -} \ No newline at end of file +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesBloomFilters.ts b/tests/cases/fourslash/referencesBloomFilters.ts index 3961d557e89..7d99ccdfd3c 100644 --- a/tests/cases/fourslash/referencesBloomFilters.ts +++ b/tests/cases/fourslash/referencesBloomFilters.ts @@ -3,18 +3,15 @@ // Ensure BloomFilter building logic is correct, by having one reference per file // @Filename: declaration.ts -////var container = { /*1*/searchProp : 1 }; +////var container = { [|searchProp|] : 1 }; // @Filename: expression.ts -////function blah() { return (1 + 2 + container./*2*/searchProp()) === 2; }; +////function blah() { return (1 + 2 + container.[|searchProp|]()) === 2; }; // @Filename: stringIndexer.ts -////function blah2() { container[/*3*/"searchProp"] }; +////function blah2() { container["[|searchProp|]"] }; // @Filename: redeclaration.ts -////container = { /*4*/"searchProp" : 18 }; +////container = { "[|searchProp|]" : 18 }; -test.markers().forEach(m => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(4); -}); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesBloomFilters2.ts b/tests/cases/fourslash/referencesBloomFilters2.ts index ef7643e0215..c42e5d4eaf1 100644 --- a/tests/cases/fourslash/referencesBloomFilters2.ts +++ b/tests/cases/fourslash/referencesBloomFilters2.ts @@ -3,18 +3,15 @@ // Ensure BloomFilter building logic is correct, by having one reference per file // @Filename: declaration.ts -////var container = { /*1*/42 : 1 }; +////var container = { [|42|]: 1 }; // @Filename: expression.ts -////function blah() { return (container[/*2*/42]) === 2; }; +////function blah() { return (container[[|42|]]) === 2; }; // @Filename: stringIndexer.ts -////function blah2() { container[/*3*/"42"] }; +////function blah2() { container["[|42|]"] }; // @Filename: redeclaration.ts -////container = { /*4*/"42" : 18 }; +////container = { "[|42|]" : 18 }; -test.markers().forEach(m => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(4); -}); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesBloomFilters3.ts b/tests/cases/fourslash/referencesBloomFilters3.ts index 65215469950..9703baceb12 100644 --- a/tests/cases/fourslash/referencesBloomFilters3.ts +++ b/tests/cases/fourslash/referencesBloomFilters3.ts @@ -4,13 +4,9 @@ // @Filename: declaration.ts -////enum Test { /*1*/"42" = 1 }; +////enum Test { "[|42|]" = 1 }; // @Filename: expression.ts -////(Test[/*2*/42]); +////(Test[[|42|]]); - -test.markers().forEach(m => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(2); -}); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForAmbients.ts b/tests/cases/fourslash/referencesForAmbients.ts index deea6ec3d29..da3f3f43aae 100644 --- a/tests/cases/fourslash/referencesForAmbients.ts +++ b/tests/cases/fourslash/referencesForAmbients.ts @@ -1,30 +1,21 @@ /// -////declare module /*1*/"foo" { -//// var f: number; +////declare module "[|foo|]" { +//// var [|f|]: number; ////} //// -////declare module "bar" { -//// export import foo = require(/*2*/"foo"); -//// var f2: typeof foo./*4*/f; +////declare module "[|bar|]" { +//// export import [|foo|] = require("[|foo|]"); +//// var f2: typeof [|foo|].[|f|]; ////} //// ////declare module "baz" { -//// import bar = require(/*3*/"bar"); -//// var f2: typeof bar./*5*/foo; +//// import bar = require("[|bar|]"); +//// var f2: typeof bar.[|foo|]; ////} -goTo.marker("1"); -verify.referencesCountIs(2); - -goTo.marker("2"); -verify.referencesCountIs(2); - -goTo.marker("3"); -verify.referencesCountIs(2); - -goTo.marker("4"); -verify.referencesCountIs(2); - -goTo.marker("5"); -verify.referencesCountIs(3); \ No newline at end of file +const [moduleFoo0, f0, moduleBar0, foo0, moduleFoo1, foo1, f1, moduleBar1, foo2] = test.ranges(); +verify.rangesReferenceEachOther([moduleFoo0, moduleFoo1]); +verify.rangesReferenceEachOther([moduleBar0, moduleBar1]); +verify.rangesReferenceEachOther([foo0, foo1, foo2]); +verify.rangesReferenceEachOther([f0, f1]); diff --git a/tests/cases/fourslash/referencesForClassLocal.ts b/tests/cases/fourslash/referencesForClassLocal.ts index 3351bcd1afb..bdde0e7f126 100644 --- a/tests/cases/fourslash/referencesForClassLocal.ts +++ b/tests/cases/fourslash/referencesForClassLocal.ts @@ -5,14 +5,14 @@ ////var n = 14; //// ////class foo { -//// private /*1*/n = 0; +//// private [|n|] = 0; //// //// public bar() { -//// this.n = 9; +//// this.[|n|] = 9; //// } //// //// constructor() { -//// this./*2*/n = 4; +//// this.[|n|] = 4; //// } //// //// public bar2() { @@ -20,8 +20,4 @@ //// } ////} -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.marker("2"); -verify.referencesCountIs(3); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForClassMembers.ts b/tests/cases/fourslash/referencesForClassMembers.ts index 851c1b39ab0..0208b13589d 100644 --- a/tests/cases/fourslash/referencesForClassMembers.ts +++ b/tests/cases/fourslash/referencesForClassMembers.ts @@ -1,32 +1,16 @@ /// ////class Base { -//// /*1*/a: number; -//// /*2*/method(): void { } +//// [|a|]: number; +//// [|method|](): void { } ////} ////class MyClass extends Base { -//// /*3*/a; -//// /*4*/method() { } +//// [|a|]; +//// [|method|]() { } ////} //// ////var c: MyClass; -////c./*5*/a; -////c./*6*/method(); +////c.[|a|]; +////c.[|method|](); -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.marker("2"); -verify.referencesCountIs(3); - -goTo.marker("3"); -verify.referencesCountIs(3); - -goTo.marker("4"); -verify.referencesCountIs(3); - -goTo.marker("5"); -verify.referencesCountIs(3); - -goTo.marker("6"); -verify.referencesCountIs(3); +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForClassMembersExtendingAbstractClass.ts b/tests/cases/fourslash/referencesForClassMembersExtendingAbstractClass.ts index fcabff979fb..46115f9da17 100644 --- a/tests/cases/fourslash/referencesForClassMembersExtendingAbstractClass.ts +++ b/tests/cases/fourslash/referencesForClassMembersExtendingAbstractClass.ts @@ -1,32 +1,16 @@ /// ////abstract class Base { -//// abstract /*1*/a: number; -//// abstract /*2*/method(): void; +//// abstract [|a|]: number; +//// abstract [|method|](): void; ////} ////class MyClass extends Base { -//// /*3*/a; -//// /*4*/method() { } +//// [|a|]; +//// [|method|]() { } ////} //// ////var c: MyClass; -////c./*5*/a; -////c./*6*/method(); +////c.[|a|]; +////c.[|method|](); -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.marker("2"); -verify.referencesCountIs(3); - -goTo.marker("3"); -verify.referencesCountIs(3); - -goTo.marker("4"); -verify.referencesCountIs(3); - -goTo.marker("5"); -verify.referencesCountIs(3); - -goTo.marker("6"); -verify.referencesCountIs(3); +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForClassMembersExtendingGenericClass.ts b/tests/cases/fourslash/referencesForClassMembersExtendingGenericClass.ts index f0185fb39aa..2b701f25cc1 100644 --- a/tests/cases/fourslash/referencesForClassMembersExtendingGenericClass.ts +++ b/tests/cases/fourslash/referencesForClassMembersExtendingGenericClass.ts @@ -1,32 +1,16 @@ /// ////class Base { -//// /*1*/a: this; -//// /*2*/method(a?:T, b?:U): this { } +//// [|a|]: this; +//// [|method|](a?:T, b?:U): this { } ////} ////class MyClass extends Base { -//// /*3*/a; -//// /*4*/method() { } +//// [|a|]; +//// [|method|]() { } ////} //// ////var c: MyClass; -////c./*5*/a; -////c./*6*/method(); +////c.[|a|]; +////c.[|method|](); -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.marker("2"); -verify.referencesCountIs(3); - -goTo.marker("3"); -verify.referencesCountIs(3); - -goTo.marker("4"); -verify.referencesCountIs(3); - -goTo.marker("5"); -verify.referencesCountIs(3); - -goTo.marker("6"); -verify.referencesCountIs(3); +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForClassParameter.ts b/tests/cases/fourslash/referencesForClassParameter.ts index 48cdbbf1e41..ce383b36503 100644 --- a/tests/cases/fourslash/referencesForClassParameter.ts +++ b/tests/cases/fourslash/referencesForClassParameter.ts @@ -7,20 +7,16 @@ ////class p { } //// ////class foo { -//// constructor (public p: any) { +//// constructor (public [|p|]: any) { //// } //// //// public f(p) { -//// this./*1*/p = p; +//// this.[|p|] = p; //// } //// ////} //// ////var n = new foo(undefined); -////n./*2*/p = null; +////n.[|p|] = null; -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.marker("2"); -verify.referencesCountIs(3); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForContextuallyTypedObjectLiteralProperties.ts b/tests/cases/fourslash/referencesForContextuallyTypedObjectLiteralProperties.ts index 15dd5720019..65bd7eebfb5 100644 --- a/tests/cases/fourslash/referencesForContextuallyTypedObjectLiteralProperties.ts +++ b/tests/cases/fourslash/referencesForContextuallyTypedObjectLiteralProperties.ts @@ -1,32 +1,28 @@ /// -////interface IFoo { /*1*/xy: number; } +////interface IFoo { [|xy|]: number; } //// ////// Assignment -////var a1: IFoo = { /*2*/xy: 0 }; -////var a2: IFoo = { xy: 0 }; +////var a1: IFoo = { [|xy|]: 0 }; +////var a2: IFoo = { [|xy|]: 0 }; //// ////// Function call ////function consumer(f: IFoo) { } -////consumer({ xy: 1 }); +////consumer({ [|xy|]: 1 }); //// ////// Type cast -////var c = { xy: 0 }; +////var c = { [|xy|]: 0 }; //// ////// Array literal -////var ar: IFoo[] = [{ xy: 1 }, { /*3*/xy: 2 }]; +////var ar: IFoo[] = [{ [|xy|]: 1 }, { [|xy|]: 2 }]; //// ////// Nested object literal -////var ob: { ifoo: IFoo } = { ifoo: { xy: 0 } }; +////var ob: { ifoo: IFoo } = { ifoo: { [|xy|]: 0 } }; //// ////// Widened type -////var w: IFoo = { /*4*/xy: undefined }; +////var w: IFoo = { [|xy|]: undefined }; //// ////// Untped -- should not be included ////var u = { xy: 0 }; - -test.markers().forEach((m) => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(9); -}); +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForContextuallyTypedUnionProperties.ts b/tests/cases/fourslash/referencesForContextuallyTypedUnionProperties.ts index f9c479de769..c0e4a5f90ea 100644 --- a/tests/cases/fourslash/referencesForContextuallyTypedUnionProperties.ts +++ b/tests/cases/fourslash/referencesForContextuallyTypedUnionProperties.ts @@ -2,39 +2,42 @@ ////interface A { //// a: number; -//// common: string; +//// [|common|]: string; ////} //// ////interface B { //// b: number; -//// common: number; +//// [|common|]: number; ////} //// ////// Assignment -////var v1: A | B = { a: 0, /*1*/common: "" }; -////var v2: A | B = { b: 0, /*2*/common: 3 }; +////var v1: A | B = { a: 0, [|common|]: "" }; +////var v2: A | B = { b: 0, [|common|]: 3 }; //// ////// Function call ////function consumer(f: A | B) { } -////consumer({ a: 0, b: 0, /*3*/common: 1 }); +////consumer({ a: 0, b: 0, [|common|]: 1 }); //// ////// Type cast -////var c = { /*4*/common: 0, b: 0 }; +////var c = { [|common|]: 0, b: 0 }; //// ////// Array literal -////var ar: Array = [{ a: 0, /*5*/common: "" }, { b: 0, /*6*/common: 0 }]; +////var ar: Array = [{ a: 0, [|common|]: "" }, { b: 0, [|common|]: 0 }]; //// ////// Nested object literal -////var ob: { aorb: A|B } = { aorb: { b: 0, /*7*/common: 0 } }; +////var ob: { aorb: A|B } = { aorb: { b: 0, [|common|]: 0 } }; //// ////// Widened type -////var w: A|B = { a:0, /*8*/common: undefined }; +////var w: A|B = { a:0, [|common|]: undefined }; //// ////// Untped -- should not be included ////var u1 = { a: 0, b: 0, common: "" }; ////var u2 = { b: 0, common: 0 }; -test.markers().forEach((m) => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(10); // 8 contextually typed common, and 2 in definition (A.common, B.common) -}); +const all = test.ranges(); +const [aCommon, bCommon, ...unionRefs] = all; +verify.referencesOf(aCommon, [aCommon, ...unionRefs]); +verify.referencesOf(bCommon, [bCommon, ...unionRefs]); +for (const ref of unionRefs) { + verify.referencesOf(ref, all); +} diff --git a/tests/cases/fourslash/referencesForContextuallyTypedUnionProperties2.ts b/tests/cases/fourslash/referencesForContextuallyTypedUnionProperties2.ts index bbcc482a6e7..de9ffbfd3be 100644 --- a/tests/cases/fourslash/referencesForContextuallyTypedUnionProperties2.ts +++ b/tests/cases/fourslash/referencesForContextuallyTypedUnionProperties2.ts @@ -6,35 +6,32 @@ ////} //// ////interface B { -//// /*1*/b: number; +//// [|b|]: number; //// common: number; ////} //// ////// Assignment ////var v1: A | B = { a: 0, common: "" }; -////var v2: A | B = { /*2*/b: 0, common: 3 }; +////var v2: A | B = { [|b|]: 0, common: 3 }; //// ////// Function call ////function consumer(f: A | B) { } -////consumer({ a: 0, /*3*/b: 0, common: 1 }); +////consumer({ a: 0, [|b|]: 0, common: 1 }); //// ////// Type cast -////var c = { common: 0, /*4*/b: 0 }; +////var c = { common: 0, [|b|]: 0 }; //// ////// Array literal -////var ar: Array = [{ a: 0, common: "" }, { /*5*/b: 0, common: 0 }]; +////var ar: Array = [{ a: 0, common: "" }, { [|b|]: 0, common: 0 }]; //// ////// Nested object literal -////var ob: { aorb: A|B } = { aorb: { /*6*/b: 0, common: 0 } }; +////var ob: { aorb: A|B } = { aorb: { [|b|]: 0, common: 0 } }; //// ////// Widened type -////var w: A|B = { /*7*/b:undefined, common: undefined }; +////var w: A|B = { [|b|]:undefined, common: undefined }; //// ////// Untped -- should not be included ////var u1 = { a: 0, b: 0, common: "" }; ////var u2 = { b: 0, common: 0 }; -test.markers().forEach((m) => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(7); -}); +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForEnums.ts b/tests/cases/fourslash/referencesForEnums.ts index fe1fd592dbb..3b979bc5096 100644 --- a/tests/cases/fourslash/referencesForEnums.ts +++ b/tests/cases/fourslash/referencesForEnums.ts @@ -1,22 +1,14 @@ /// ////enum E { -//// /*value1*/value1 = 1, -//// "value2" = value1, -//// 111 = 11 +//// [|value1|] = 1, +//// "[|value2|]" = [|value1|], +//// [|111|] = 11 ////} //// -////E.value1; -////E["value2"]; -////E./*value2*/value2; -////E[/*value3*/111]; +////E.[|value1|]; +////E["[|value2|]"]; +////E.[|value2|]; +////E[[|111|]]; - -goTo.marker("value1"); -verify.referencesCountIs(3); - -goTo.marker("value2"); -verify.referencesCountIs(3); - -goTo.marker("value3"); -verify.referencesCountIs(2); \ No newline at end of file +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForExportedValues.ts b/tests/cases/fourslash/referencesForExportedValues.ts index dc7c52174af..315d0b1b585 100644 --- a/tests/cases/fourslash/referencesForExportedValues.ts +++ b/tests/cases/fourslash/referencesForExportedValues.ts @@ -1,16 +1,13 @@ /// ////module M { -//// export var /*1*/variable = 0; +//// export var [|variable|] = 0; //// //// // local use -//// var x = /*2*/variable; +//// var x = [|variable|]; ////} //// ////// external use -////M./*3*/variable +////M.[|variable|] -test.markers().forEach((m) => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(3); -}); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForExternalModuleNames.ts b/tests/cases/fourslash/referencesForExternalModuleNames.ts index 7da6091d9e2..ee783c8bd7e 100644 --- a/tests/cases/fourslash/referencesForExternalModuleNames.ts +++ b/tests/cases/fourslash/referencesForExternalModuleNames.ts @@ -3,16 +3,12 @@ // Global interface reference. // @Filename: referencesForGlobals_1.ts -////declare module /*1*/"foo" { +////declare module "[|foo|]" { //// var f: number; ////} // @Filename: referencesForGlobals_2.ts -////import f = require(/*2*/"foo"); +////import f = require("[|foo|]"); -goTo.marker("1"); -verify.referencesCountIs(2); - -goTo.marker("2"); -verify.referencesCountIs(2); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForFunctionOverloads.ts b/tests/cases/fourslash/referencesForFunctionOverloads.ts index 2a4981ff4a3..d6873643cd4 100644 --- a/tests/cases/fourslash/referencesForFunctionOverloads.ts +++ b/tests/cases/fourslash/referencesForFunctionOverloads.ts @@ -2,16 +2,9 @@ // Function overloads should be highlighted together. -////function /*1*/foo(x: string); -////function /*2*/foo(x: string, y: number) { -//// /*3*/foo('', 43); +////function [|foo|](x: string); +////function [|foo|](x: string, y: number) { +//// [|foo|]('', 43); ////} -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.marker("2"); -verify.referencesCountIs(3); - -goTo.marker("3"); -verify.referencesCountIs(3); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForFunctionParameter.ts b/tests/cases/fourslash/referencesForFunctionParameter.ts index fd9189d1b72..64d33ca9a60 100644 --- a/tests/cases/fourslash/referencesForFunctionParameter.ts +++ b/tests/cases/fourslash/referencesForFunctionParameter.ts @@ -3,13 +3,9 @@ ////var x; ////var n; //// -////function n(x: number, /*1*/n: number) { -//// /*2*/n = 32; -//// x = n; +////function n(x: number, [|n|]: number) { +//// [|n|] = 32; +//// x = [|n|]; ////} -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.marker("2"); -verify.referencesCountIs(3); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForGlobals.ts b/tests/cases/fourslash/referencesForGlobals.ts index a4efddae3d7..f4d7c479767 100644 --- a/tests/cases/fourslash/referencesForGlobals.ts +++ b/tests/cases/fourslash/referencesForGlobals.ts @@ -3,7 +3,7 @@ // Global variable reference. // @Filename: referencesForGlobals_1.ts -////var /*1*/global = 2; +////var [|global|] = 2; //// ////class foo { //// constructor (public global) { } @@ -13,20 +13,16 @@ //// ////class bar { //// constructor () { -//// var n = global; +//// var n = [|global|]; //// //// var f = new foo(''); //// f.global = ''; //// } ////} //// -////var k = global; +////var k = [|global|]; // @Filename: referencesForGlobals_2.ts -////var m = global; +////var m = [|global|]; -// this line triggers a semantic/syntactic error check, remove line when 788570 is fixed -edit.insert(''); - -goTo.marker("1"); -verify.referencesCountIs(4); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForGlobals2.ts b/tests/cases/fourslash/referencesForGlobals2.ts index a0a35d8a08f..7c6baf5bf67 100644 --- a/tests/cases/fourslash/referencesForGlobals2.ts +++ b/tests/cases/fourslash/referencesForGlobals2.ts @@ -3,15 +3,11 @@ // Global class reference. // @Filename: referencesForGlobals_1.ts -////class /*2*/globalClass { +////class [|globalClass|] { //// public f() { } ////} // @Filename: referencesForGlobals_2.ts -////var c = /*1*/globalClass(); +////var c = [|globalClass|](); -goTo.marker("1"); -verify.referencesCountIs(2); - -goTo.marker("2"); -verify.referencesCountIs(2); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForGlobals3.ts b/tests/cases/fourslash/referencesForGlobals3.ts index 636e14bf629..67e209aaad3 100644 --- a/tests/cases/fourslash/referencesForGlobals3.ts +++ b/tests/cases/fourslash/referencesForGlobals3.ts @@ -3,15 +3,11 @@ // Global interface reference. // @Filename: referencesForGlobals_1.ts -////interface /*2*/globalInterface { +////interface [|globalInterface|] { //// f(); ////} // @Filename: referencesForGlobals_2.ts -////var i: /*1*/globalInterface; +////var i: [|globalInterface|]; -goTo.marker("1"); -verify.referencesCountIs(2); - -goTo.marker("2"); -verify.referencesCountIs(2); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForGlobals4.ts b/tests/cases/fourslash/referencesForGlobals4.ts index ee12a1754cd..d7acfbd2df4 100644 --- a/tests/cases/fourslash/referencesForGlobals4.ts +++ b/tests/cases/fourslash/referencesForGlobals4.ts @@ -3,15 +3,11 @@ // Global module reference. // @Filename: referencesForGlobals_1.ts -////module /*2*/globalModule { +////module [|globalModule|] { //// export f() { }; ////} // @Filename: referencesForGlobals_2.ts -////var m = /*1*/globalModule; +////var m = [|globalModule|]; -goTo.marker("1"); -verify.referencesCountIs(2); - -goTo.marker("2"); -verify.referencesCountIs(2); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForGlobals5.ts b/tests/cases/fourslash/referencesForGlobals5.ts index 9c800f116be..4db2410f638 100644 --- a/tests/cases/fourslash/referencesForGlobals5.ts +++ b/tests/cases/fourslash/referencesForGlobals5.ts @@ -7,13 +7,9 @@ //// export var x; ////} //// -////import /*2*/globalAlias = globalModule; +////import [|globalAlias|] = globalModule; // @Filename: referencesForGlobals_2.ts -////var m = /*1*/globalAlias; +////var m = [|globalAlias|]; -goTo.marker("1"); -verify.referencesCountIs(2); - -goTo.marker("2"); -verify.referencesCountIs(2); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForGlobalsInExternalModule.ts b/tests/cases/fourslash/referencesForGlobalsInExternalModule.ts index b76007624bb..c2f70420402 100644 --- a/tests/cases/fourslash/referencesForGlobalsInExternalModule.ts +++ b/tests/cases/fourslash/referencesForGlobalsInExternalModule.ts @@ -2,23 +2,20 @@ // Global variable reference. -////var /*1*/topLevelVar = 2; -////var topLevelVar2 = topLevelVar; +////var [|topLevelVar|] = 2; +////var topLevelVar2 = [|topLevelVar|]; //// -////class /*2*/topLevelClass { } -////var c = new topLevelClass(); +////class [|topLevelClass|] { } +////var c = new [|topLevelClass|](); //// -////interface topLevelInterface { } -////var i: /*3*/topLevelInterface; +////interface [|topLevelInterface|] { } +////var i: [|topLevelInterface|]; //// -////module topLevelModule { +////module [|topLevelModule|] { //// export var x; ////} -////var x = /*4*/topLevelModule.x; +////var x = [|topLevelModule|].x; //// ////export = x; -test.markers().forEach(m => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(2); -}); \ No newline at end of file +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForIllegalAssignment.ts b/tests/cases/fourslash/referencesForIllegalAssignment.ts index 403bf0432a7..59cb6f4f273 100644 --- a/tests/cases/fourslash/referencesForIllegalAssignment.ts +++ b/tests/cases/fourslash/referencesForIllegalAssignment.ts @@ -2,20 +2,13 @@ ////f/*1*/oo = fo/*2*/o; -////var /*3*/bar = function () { }; -////ba/*4*/r = b/*5*/ar + 1; +////var [|bar|] = function () { }; +////[|bar|] = [|bar|] + 1; goTo.marker("1"); -verify.referencesCountIs(0); +verify.referencesAre([]); goTo.marker("2"); -verify.referencesCountIs(0); +verify.referencesAre([]); -goTo.marker("3"); -verify.referencesCountIs(3); - -goTo.marker("4"); -verify.referencesCountIs(3); - -goTo.marker("5"); -verify.referencesCountIs(3); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForImports.ts b/tests/cases/fourslash/referencesForImports.ts index 58ad1cc5a0d..0203bcee096 100644 --- a/tests/cases/fourslash/referencesForImports.ts +++ b/tests/cases/fourslash/referencesForImports.ts @@ -5,19 +5,11 @@ //// export = $; ////} +////import [|$|] = require("jquery"); +////[|$|]("a"); -////import /*1*/$ = require("jquery"); -/////*2*/$("a"); +////import [|$|] = require("jquery"); - -////import /*3*/$ = require("jquery"); - - -goTo.marker("1"); -verify.referencesCountIs(2); - -goTo.marker("2"); -verify.referencesCountIs(2); - -goTo.marker("3"); -verify.referencesCountIs(1); \ No newline at end of file +const [r0, r1, r2] = test.ranges(); +verify.rangesReferenceEachOther([r0, r1]); +verify.referencesOf(r2, [r2]); diff --git a/tests/cases/fourslash/referencesForIndexProperty.ts b/tests/cases/fourslash/referencesForIndexProperty.ts index 89084a2ef05..49d12c25819 100644 --- a/tests/cases/fourslash/referencesForIndexProperty.ts +++ b/tests/cases/fourslash/referencesForIndexProperty.ts @@ -3,16 +3,12 @@ // References a class property using string index access ////class Foo { -//// property: number; -//// method(): void { } +//// [|property|]: number; +//// [|method|](): void { } ////} //// ////var f: Foo; -////f[/*1*/"property"]; -////f[/*2*/"method"]; +////f["[|property|]"]; +////f["[|method|]"]; -goTo.marker("1"); -verify.referencesCountIs(2); - -goTo.marker("2"); -verify.referencesCountIs(2); +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForIndexProperty2.ts b/tests/cases/fourslash/referencesForIndexProperty2.ts index 9dcba3163c6..ad440d84493 100644 --- a/tests/cases/fourslash/referencesForIndexProperty2.ts +++ b/tests/cases/fourslash/referencesForIndexProperty2.ts @@ -3,7 +3,7 @@ // References to a unknown index property ////var a; -////a[/*1*/"blah"]; +////a[/**/"blah"]; -goTo.marker("1"); -verify.referencesCountIs(0); \ No newline at end of file +goTo.marker(""); +verify.referencesAre([]); diff --git a/tests/cases/fourslash/referencesForIndexProperty3.ts b/tests/cases/fourslash/referencesForIndexProperty3.ts index 07081f8c17d..1fdee9b6602 100644 --- a/tests/cases/fourslash/referencesForIndexProperty3.ts +++ b/tests/cases/fourslash/referencesForIndexProperty3.ts @@ -3,17 +3,13 @@ // References to a property of the apparent type using string indexer ////interface Object { -//// toMyString(); +//// [|toMyString|](); ////} //// ////var y: Object; -////y./*1*/toMyString(); +////y.[|toMyString|](); //// ////var x = {}; -////x[/*2*/"toMyString"](); +////x["[|toMyString|]"](); -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.marker("2"); -verify.referencesCountIs(3); +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForInheritedProperties.ts b/tests/cases/fourslash/referencesForInheritedProperties.ts index a11d86ef5e1..19fef4066ee 100644 --- a/tests/cases/fourslash/referencesForInheritedProperties.ts +++ b/tests/cases/fourslash/referencesForInheritedProperties.ts @@ -1,15 +1,15 @@ /// ////interface interface1 { -//// /*1*/doStuff(): void; +//// [|doStuff|](): void; ////} //// ////interface interface2 extends interface1{ -//// /*2*/doStuff(): void; +//// [|doStuff|](): void; ////} //// ////class class1 implements interface2 { -//// /*3*/doStuff() { +//// [|doStuff|]() { //// //// } ////} @@ -19,9 +19,6 @@ ////} //// ////var v: class2; -////v./*4*/doStuff(); +////v.[|doStuff|](); -test.markers().forEach(m=> { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(4); -}); +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForInheritedProperties2.ts b/tests/cases/fourslash/referencesForInheritedProperties2.ts index 2203b005284..33a7f26aaea 100644 --- a/tests/cases/fourslash/referencesForInheritedProperties2.ts +++ b/tests/cases/fourslash/referencesForInheritedProperties2.ts @@ -3,18 +3,18 @@ // extends statement in a diffrent declaration ////interface interface1 { -//// /*1*/doStuff(): void; +//// [|doStuff|](): void; ////} //// ////interface interface2 { -//// /*2*/doStuff(): void; +//// [|doStuff|](): void; ////} //// ////interface interface2 extends interface1 { ////} //// ////class class1 implements interface2 { -//// /*3*/doStuff() { +//// [|doStuff|]() { //// //// } ////} @@ -24,9 +24,6 @@ ////} //// ////var v: class2; -////v./*4*/doStuff(); +////v.[|doStuff|](); -test.markers().forEach(m=> { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(4); -}); +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForInheritedProperties3.ts b/tests/cases/fourslash/referencesForInheritedProperties3.ts index 134f75da84b..3a2d11da692 100644 --- a/tests/cases/fourslash/referencesForInheritedProperties3.ts +++ b/tests/cases/fourslash/referencesForInheritedProperties3.ts @@ -1,15 +1,12 @@ /// //// interface interface1 extends interface1 { -//// /*1*/doStuff(): void; -//// /*2*/propName: string; +//// [|doStuff|](): void; +//// [|propName|]: string; //// } //// //// var v: interface1; -//// v./*3*/propName; -//// v./*4*/doStuff(); +//// v.[|propName|]; +//// v.[|doStuff|](); -test.markers().forEach(m => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(2); -}); \ No newline at end of file +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForInheritedProperties4.ts b/tests/cases/fourslash/referencesForInheritedProperties4.ts index 10dcc9c77a2..96010d05086 100644 --- a/tests/cases/fourslash/referencesForInheritedProperties4.ts +++ b/tests/cases/fourslash/referencesForInheritedProperties4.ts @@ -1,15 +1,12 @@ /// //// class class1 extends class1 { -//// /*1*/doStuff() { } -//// /*2*/propName: string; +//// [|doStuff|]() { } +//// [|propName|]: string; //// } //// //// var c: class1; -//// c./*3*/doStuff(); -//// c./*4*/propName; +//// c.[|doStuff|](); +//// c.[|propName|]; -test.markers().forEach(m => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(2); -}); \ No newline at end of file +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForInheritedProperties5.ts b/tests/cases/fourslash/referencesForInheritedProperties5.ts index 722c5c96f0a..bbb86f0defb 100644 --- a/tests/cases/fourslash/referencesForInheritedProperties5.ts +++ b/tests/cases/fourslash/referencesForInheritedProperties5.ts @@ -1,19 +1,16 @@ /// //// interface interface1 extends interface1 { -//// /*1*/doStuff(): void; -//// /*2*/propName: string; +//// [|doStuff|](): void; +//// [|propName|]: string; //// } //// interface interface2 extends interface1 { -//// /*3*/doStuff(): void; -//// /*4*/propName: string; +//// [|doStuff|](): void; +//// [|propName|]: string; //// } //// //// var v: interface1; -//// v./*5*/propName; -//// v./*6*/doStuff(); +//// v.[|propName|]; +//// v.[|doStuff|](); -test.markers().forEach(m => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(3); -}); \ No newline at end of file +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForInheritedProperties6.ts b/tests/cases/fourslash/referencesForInheritedProperties6.ts index ddd52447dc1..ff008cceb43 100644 --- a/tests/cases/fourslash/referencesForInheritedProperties6.ts +++ b/tests/cases/fourslash/referencesForInheritedProperties6.ts @@ -1,32 +1,16 @@ /// //// class class1 extends class1 { -//// /*1*/doStuff() { } -//// /*2*/propName: string; +//// [|doStuff|]() { } +//// [|propName|]: string; //// } //// class class2 extends class1 { -//// /*3*/doStuff() { } -//// /*4*/propName: string; +//// [|doStuff|]() { } +//// [|propName|]: string; //// } //// //// var v: class2; -//// v./*5*/propName; -//// v./*6*/doStuff(); +//// v.[|propName|]; +//// v.[|doStuff|](); -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.marker("2"); -verify.referencesCountIs(3); - -goTo.marker("3"); -verify.referencesCountIs(3); - -goTo.marker("4"); -verify.referencesCountIs(3); - -goTo.marker("5"); -verify.referencesCountIs(3); - -goTo.marker("6"); -verify.referencesCountIs(3); \ No newline at end of file +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForInheritedProperties7.ts b/tests/cases/fourslash/referencesForInheritedProperties7.ts index 5747e99615f..ec92a06f0a3 100644 --- a/tests/cases/fourslash/referencesForInheritedProperties7.ts +++ b/tests/cases/fourslash/referencesForInheritedProperties7.ts @@ -1,42 +1,30 @@ /// //// class class1 extends class1 { -//// /*1*/doStuff() { } -//// /*2*/propName: string; +//// [|doStuff|]() { } +//// [|propName|]: string; //// } //// interface interface1 extends interface1 { -//// /*3*/doStuff(): void; -//// /*4*/propName: string; +//// [|doStuff|](): void; +//// [|propName|]: string; //// } //// class class2 extends class1 implements interface1 { -//// /*5*/doStuff() { } -//// /*6*/propName: string; +//// [|doStuff|]() { } +//// [|propName|]: string; //// } //// //// var v: class2; -//// v./*7*/propName; -//// v./*8*/doStuff(); +//// v.[|propName|]; +//// v.[|doStuff|](); -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.marker("2"); -verify.referencesCountIs(3); - -goTo.marker("3"); -verify.referencesCountIs(3); - -goTo.marker("4"); -verify.referencesCountIs(3); - -goTo.marker("5"); -verify.referencesCountIs(4); - -goTo.marker("6"); -verify.referencesCountIs(4); - -goTo.marker("7"); -verify.referencesCountIs(4); - -goTo.marker("8"); -verify.referencesCountIs(4); \ No newline at end of file +const [r0, r1, r2, r3, r4, r5, r6, r7] = test.ranges(); +verify.referencesOf(r0, [r0, r4, r7]); +verify.referencesOf(r1, [r1, r5, r6]); +verify.referencesOf(r2, [r2, r4, r7]); +verify.referencesOf(r3, [r3, r5, r6]); +const allDoStuff = [r0, r2, r4, r7]; +verify.referencesOf(r4, allDoStuff); +const allPropName = [r1, r3, r5, r6]; +verify.referencesOf(r5, allPropName); +verify.referencesOf(r6, allPropName); +verify.referencesOf(r7, allDoStuff); diff --git a/tests/cases/fourslash/referencesForInheritedProperties8.ts b/tests/cases/fourslash/referencesForInheritedProperties8.ts index f34b327a472..964309fc477 100644 --- a/tests/cases/fourslash/referencesForInheritedProperties8.ts +++ b/tests/cases/fourslash/referencesForInheritedProperties8.ts @@ -1,27 +1,16 @@ /// //// interface C extends D { -//// /*0*/propD: number; +//// [|propD|]: number; //// } //// interface D extends C { -//// /*1*/propD: string; -//// /*3*/propC: number; +//// [|propD|]: string; +//// [|propC|]: number; //// } //// var d: D; -//// d./*2*/propD; -//// d./*4*/propC; +//// d.[|propD|]; +//// d.[|propC|]; -goTo.marker("0"); -verify.referencesCountIs(3); - -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.marker("2"); -verify.referencesCountIs(3); - -goTo.marker("3"); -verify.referencesCountIs(2); - -goTo.marker("4"); -verify.referencesCountIs(2); \ No newline at end of file +const [d0, d1, c0, d2, c1] = test.ranges(); +verify.rangesReferenceEachOther([d0, d1, d2]); +verify.rangesReferenceEachOther([c0, c1]); diff --git a/tests/cases/fourslash/referencesForInheritedProperties9.ts b/tests/cases/fourslash/referencesForInheritedProperties9.ts index b348d6e8cf6..7d4330d0aa6 100644 --- a/tests/cases/fourslash/referencesForInheritedProperties9.ts +++ b/tests/cases/fourslash/referencesForInheritedProperties9.ts @@ -1,21 +1,16 @@ /// //// class D extends C { -//// /*0*/prop1: string; +//// [|prop1|]: string; //// } //// //// class C extends D { -//// /*1*/prop1: string; +//// [|prop1|]: string; //// } //// //// var c: C; -//// c./*2*/prop1; +//// c.[|prop1|]; -goTo.marker("0"); -verify.referencesCountIs(1); - -goTo.marker("1"); -verify.referencesCountIs(2) - -goTo.marker("2"); -verify.referencesCountIs(2) \ No newline at end of file +const [r0, r1, r2] = test.ranges(); +verify.referencesOf(r0, [r0]); +verify.rangesReferenceEachOther([r1, r2]); diff --git a/tests/cases/fourslash/referencesForLabel.ts b/tests/cases/fourslash/referencesForLabel.ts index f79e038ca0a..14b58fd1d92 100644 --- a/tests/cases/fourslash/referencesForLabel.ts +++ b/tests/cases/fourslash/referencesForLabel.ts @@ -2,22 +2,14 @@ // Valid References for a label -/////*1*/label: while (true) { -//// if (false) break /*2*/label; -//// if (true) continue /*3*/label; +////[|label|]: while (true) { +//// if (false) break [|label|]; +//// if (true) continue [|label|]; ////} //// -/////*4*/label: while (false) { } +////[|label|]: while (false) { } ////var label = "label"; -goTo.marker("1"); -verify.referencesCountIs(3); - -goTo.marker("2"); -verify.referencesCountIs(3); - -goTo.marker("3"); -verify.referencesCountIs(3); - -goTo.marker("4"); -verify.referencesCountIs(1); \ No newline at end of file +const [r0, r1, r2, r3] = test.ranges(); +verify.rangesReferenceEachOther([r0, r1, r2]); +verify.referencesOf(r3, [r3]); diff --git a/tests/cases/fourslash/referencesForLabel2.ts b/tests/cases/fourslash/referencesForLabel2.ts index ccb441d60b9..841e35ad700 100644 --- a/tests/cases/fourslash/referencesForLabel2.ts +++ b/tests/cases/fourslash/referencesForLabel2.ts @@ -4,9 +4,9 @@ ////var label = "label"; ////while (true) { -//// if (false) break /*1*/label; +//// if (false) break /**/label; //// if (true) continue label; ////} -goTo.marker("1"); -verify.referencesCountIs(0); +goTo.marker(); +verify.referencesAre([]); diff --git a/tests/cases/fourslash/referencesForLabel3.ts b/tests/cases/fourslash/referencesForLabel3.ts index 9c621909c34..fb7a51f858e 100644 --- a/tests/cases/fourslash/referencesForLabel3.ts +++ b/tests/cases/fourslash/referencesForLabel3.ts @@ -2,9 +2,9 @@ // References to unused label -/////*1*/label: while (true) { +////[|label|]: while (true) { //// var label = "label"; ////} -goTo.marker("1"); -verify.referencesCountIs(1); +const [label] = test.ranges(); +verify.referencesOf(label, [label]); diff --git a/tests/cases/fourslash/referencesForLabel4.ts b/tests/cases/fourslash/referencesForLabel4.ts index d9817b2d857..5462500f53c 100644 --- a/tests/cases/fourslash/referencesForLabel4.ts +++ b/tests/cases/fourslash/referencesForLabel4.ts @@ -2,14 +2,10 @@ // References to a label outside function bounderies -/////*1*/label: function foo(label) { +////[|label|]: function foo(label) { //// while (true) { -//// break /*2*/label; +//// break [|label|]; //// } ////} -goTo.marker("1"); -verify.referencesCountIs(2); - -goTo.marker("2"); -verify.referencesCountIs(2); +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForLabel5.ts b/tests/cases/fourslash/referencesForLabel5.ts index dba59ec79ab..48d5aab04c2 100644 --- a/tests/cases/fourslash/referencesForLabel5.ts +++ b/tests/cases/fourslash/referencesForLabel5.ts @@ -2,27 +2,16 @@ // References to shadowed label -/////*outer1*/label: while (true) { -//// if (false) break /*outer2*/label; +////[|label|]: while (true) { +//// if (false) break [|label|]; //// function blah() { -/////*inner1*/label: while (true) { -//// if (false) break /*inner2*/label; +////[|label|]: while (true) { +//// if (false) break [|label|]; //// } //// } -//// if (false) break /*outer3*/label; +//// if (false) break [|label|]; //// } -goTo.marker("outer1"); -verify.referencesCountIs(3); - -goTo.marker("outer2"); -verify.referencesCountIs(3); - -goTo.marker("outer3"); -verify.referencesCountIs(3); - -goTo.marker("inner1"); -verify.referencesCountIs(2); - -goTo.marker("inner2"); -verify.referencesCountIs(2); +const [outer1, outer2, inner1, inner2, outer3] = test.ranges(); +verify.rangesReferenceEachOther([outer1, outer2, outer3]); +verify.rangesReferenceEachOther([inner1, inner2]); diff --git a/tests/cases/fourslash/referencesForLabel6.ts b/tests/cases/fourslash/referencesForLabel6.ts index a9aab59c467..aea45805756 100644 --- a/tests/cases/fourslash/referencesForLabel6.ts +++ b/tests/cases/fourslash/referencesForLabel6.ts @@ -1,14 +1,12 @@ /// -// References to lable wiht close names +// References to labels with close names -/////*1*/labela: while (true) { -/////*2*/labelb: while (false) { break labelb; } +////[|labela|]: while (true) { +////[|labelb|]: while (false) { break [|labelb|]; } //// break labelc; ////} -goTo.marker("1"); -verify.referencesCountIs(1); - -goTo.marker("2"); -verify.referencesCountIs(2); \ No newline at end of file +const [a, b, useB] = test.ranges(); +verify.referencesOf(a, [a]); +verify.rangesReferenceEachOther([b, useB]); diff --git a/tests/cases/fourslash/referencesForMergedDeclarations.ts b/tests/cases/fourslash/referencesForMergedDeclarations.ts index a475780b66e..8a0a5d4c680 100644 --- a/tests/cases/fourslash/referencesForMergedDeclarations.ts +++ b/tests/cases/fourslash/referencesForMergedDeclarations.ts @@ -1,21 +1,20 @@ /// -////interface /*type1*/Foo { +////interface [|Foo|] { ////} //// -////module /*namespace1*/Foo { +////module [|Foo|] { //// export interface Bar { } ////} //// -////function /*value1*/Foo(): void { +////function [|Foo|](): void { ////} //// -////var f1: /*namespace2*/Foo.Bar; -////var f2: /*type2*/Foo; -/////*value2*/Foo.bind(this); +////var f1: [|Foo|].Bar; +////var f2: [|Foo|]; +////[|Foo|].bind(this); - -test.markers().forEach(m => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(2); -}); +const [type1, namespace1, value1, namespace2, type2, value2] = test.ranges(); +verify.rangesReferenceEachOther([type1, type2]); +verify.rangesReferenceEachOther([namespace1, namespace2]); +verify.rangesReferenceEachOther([value1, value2]); diff --git a/tests/cases/fourslash/referencesForMergedDeclarations2.ts b/tests/cases/fourslash/referencesForMergedDeclarations2.ts index f7dbdc289d4..75d485002a4 100644 --- a/tests/cases/fourslash/referencesForMergedDeclarations2.ts +++ b/tests/cases/fourslash/referencesForMergedDeclarations2.ts @@ -6,16 +6,9 @@ //// ////function ATest() { } //// -////import /*definition*/alias = ATest; +////import [|alias|] = ATest; // definition //// -////var a: /*namespace*/alias.Bar; -/////*value*/alias.call(this); +////var a: [|alias|].Bar; // namespace +////[|alias|].call(this); // value -goTo.marker("definition"); -verify.referencesCountIs(3); - -goTo.marker("namespace"); -verify.referencesCountIs(3); - -goTo.marker("value"); -verify.referencesCountIs(3); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForMergedDeclarations3.ts b/tests/cases/fourslash/referencesForMergedDeclarations3.ts index 80cf1fb9e42..181d68e79b3 100644 --- a/tests/cases/fourslash/referencesForMergedDeclarations3.ts +++ b/tests/cases/fourslash/referencesForMergedDeclarations3.ts @@ -2,38 +2,24 @@ // class and uninstanciated module -////class testClass { +////class [|testClass|] { //// static staticMethod() { } //// method() { } ////} //// -////module testClass { +////module [|testClass|] { //// export interface Bar { //// //// } ////} //// -////var c1: /*class1*/testClass; -////var c2: /*module*/testClass.Bar; -/////*class2*/testClass.staticMethod(); -/////*class3*/testClass.prototype.method(); -/////*class4*/testClass.bind(this); -////new /*class5*/testClass(); +////var c1: [|testClass|]; +////var c2: [|testClass|].Bar; +////[|testClass|].staticMethod(); +////[|testClass|].prototype.method(); +////[|testClass|].bind(this); +////new [|testClass|](); -goTo.marker("module"); -verify.referencesCountIs(2); - -goTo.marker("class1"); -verify.referencesCountIs(6); - -goTo.marker("class2"); -verify.referencesCountIs(6); - -goTo.marker("class3"); -verify.referencesCountIs(6); - -goTo.marker("class4"); -verify.referencesCountIs(6); - -goTo.marker("class5"); -verify.referencesCountIs(6); \ No newline at end of file +const [class0, module0, class1, module1, class2, class3, class4, class5] = test.ranges(); +verify.rangesReferenceEachOther([module0, module1]); +verify.rangesReferenceEachOther([class0, class1, class2, class3, class4, class5]); diff --git a/tests/cases/fourslash/referencesForMergedDeclarations4.ts b/tests/cases/fourslash/referencesForMergedDeclarations4.ts index 88faf672fcc..d35cbea745d 100644 --- a/tests/cases/fourslash/referencesForMergedDeclarations4.ts +++ b/tests/cases/fourslash/referencesForMergedDeclarations4.ts @@ -2,28 +2,24 @@ // class and instanciated module -////class testClass { +////class [|testClass|] { //// static staticMethod() { } //// method() { } ////} //// -////module testClass { +////module [|testClass|] { //// export interface Bar { //// //// } //// export var s = 0; ////} //// -////var c1: /*1*/testClass; -////var c2: /*2*/testClass.Bar; -/////*3*/testClass.staticMethod(); -/////*4*/testClass.prototype.method(); -/////*5*/testClass.bind(this); -/////*6*/testClass.s; -////new /*7*/testClass(); +////var c1: [|testClass|]; +////var c2: [|testClass|].Bar; +////[|testClass|].staticMethod(); +////[|testClass|].prototype.method(); +////[|testClass|].bind(this); +////[|testClass|].s; +////new [|testClass|](); -// Instanciated Module and class intersect in the value space, so we consider them all one group -test.markers().forEach(m => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(9); -}); +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForMergedDeclarations5.ts b/tests/cases/fourslash/referencesForMergedDeclarations5.ts index deb7ad321c9..8fe33ca31e4 100644 --- a/tests/cases/fourslash/referencesForMergedDeclarations5.ts +++ b/tests/cases/fourslash/referencesForMergedDeclarations5.ts @@ -1,10 +1,10 @@ /// -////interface Foo { } -////module Foo { export interface Bar { } } -////function Foo() { } +////interface [|Foo|] { } +////module [|Foo|] { export interface Bar { } } +////function [|Foo|]() { } //// -////export = /*1*/Foo; +////export = [|Foo|]; -goTo.marker("1"); -verify.referencesCountIs(4); \ No newline at end of file +const [r0, r1, r2, r3] = test.ranges(); +verify.referencesOf(r3, [r0, r1, r2, r3]); diff --git a/tests/cases/fourslash/referencesForMergedDeclarations6.ts b/tests/cases/fourslash/referencesForMergedDeclarations6.ts index ae0e3992146..e4b5b9111c6 100644 --- a/tests/cases/fourslash/referencesForMergedDeclarations6.ts +++ b/tests/cases/fourslash/referencesForMergedDeclarations6.ts @@ -1,14 +1,13 @@ /// ////interface Foo { } -////module Foo { +////module [|Foo|] { //// export interface Bar { } //// export module Bar { export interface Baz { } } //// export function Bar() { } ////} //// ////// module -////import a1 = /*1*/Foo; +////import a1 = [|Foo|]; -goTo.marker("1"); -verify.referencesCountIs(2); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForMergedDeclarations7.ts b/tests/cases/fourslash/referencesForMergedDeclarations7.ts index 1c6d730797f..bc56b5d6f9d 100644 --- a/tests/cases/fourslash/referencesForMergedDeclarations7.ts +++ b/tests/cases/fourslash/referencesForMergedDeclarations7.ts @@ -2,13 +2,13 @@ ////interface Foo { } ////module Foo { -//// export interface Bar { } -//// export module Bar { export interface Baz { } } -//// export function Bar() { } +//// export interface [|Bar|] { } +//// export module [|Bar|] { export interface Baz { } } +//// export function [|Bar|]() { } ////} //// ////// module, value and type -////import a2 = Foo./*1*/Bar; +////import a2 = Foo.[|Bar|]; -goTo.marker("1"); -verify.referencesCountIs(4); \ No newline at end of file +const [r0, r1, r2, r3] = test.ranges(); +verify.referencesOf(r3, [r0, r1, r2, r3]); diff --git a/tests/cases/fourslash/referencesForMergedDeclarations8.ts b/tests/cases/fourslash/referencesForMergedDeclarations8.ts index 9e7a821a024..b5b1428b7c9 100644 --- a/tests/cases/fourslash/referencesForMergedDeclarations8.ts +++ b/tests/cases/fourslash/referencesForMergedDeclarations8.ts @@ -3,12 +3,11 @@ ////interface Foo { } ////module Foo { //// export interface Bar { } -//// export module Bar { export interface Baz { } } +//// export module [|Bar|] { export interface Baz { } } //// export function Bar() { } ////} //// ////// module -////import a3 = Foo./*1*/Bar.Baz; +////import a3 = Foo.[|Bar|].Baz; -goTo.marker("1"); -verify.referencesCountIs(2); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForNoContext.ts b/tests/cases/fourslash/referencesForNoContext.ts index ee9391e5416..4631ce50c16 100644 --- a/tests/cases/fourslash/referencesForNoContext.ts +++ b/tests/cases/fourslash/referencesForNoContext.ts @@ -22,13 +22,13 @@ ////} goTo.marker("1"); -verify.referencesCountIs(0); +verify.referencesAre([]); goTo.marker("2"); -verify.referencesCountIs(0); +verify.referencesAre([]); goTo.marker("3"); -verify.referencesCountIs(0); +verify.referencesAre([]); goTo.marker("4"); -verify.referencesCountIs(0); +verify.referencesAre([]); diff --git a/tests/cases/fourslash/referencesForNumericLiteralPropertyNames.ts b/tests/cases/fourslash/referencesForNumericLiteralPropertyNames.ts index e2a781ff58c..5e6e8172092 100644 --- a/tests/cases/fourslash/referencesForNumericLiteralPropertyNames.ts +++ b/tests/cases/fourslash/referencesForNumericLiteralPropertyNames.ts @@ -1,15 +1,12 @@ /// ////class Foo { -//// public /*1*/12: any; +//// public [|12|]: any; ////} //// ////var x: Foo; -////x[/*2*/12]; -////x = { "12": 0 }; -////x = { /*3*/12: 0 }; +////x[[|12|]]; +////x = { "[|12|]": 0 }; +////x = { [|12|]: 0 }; -test.markers().forEach((m) => { - goTo.position(m.position, m.fileName); - verify.referencesCountIs(4); -}); +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForObjectLiteralProperties.ts b/tests/cases/fourslash/referencesForObjectLiteralProperties.ts index 8515a5487b7..f2a815e845b 100644 --- a/tests/cases/fourslash/referencesForObjectLiteralProperties.ts +++ b/tests/cases/fourslash/referencesForObjectLiteralProperties.ts @@ -2,14 +2,10 @@ // References to an object literal property -////var x = { /*1*/add: 0, b: "string" }; -////x["add"]; -////x./*2*/add; +////var x = { [|add|]: 0, b: "string" }; +////x["[|add|]"]; +////x.[|add|]; ////var y = x; -////y.add; +////y.[|add|]; -goTo.marker("1"); -verify.referencesCountIs(4); - -goTo.marker("2"); -verify.referencesCountIs(4); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForOverrides.ts b/tests/cases/fourslash/referencesForOverrides.ts index 2b67269a6f3..4896bd1cd39 100644 --- a/tests/cases/fourslash/referencesForOverrides.ts +++ b/tests/cases/fourslash/referencesForOverrides.ts @@ -3,82 +3,76 @@ ////module FindRef3 { //// module SimpleClassTest { //// export class Foo { -//// public foo(): void { +//// public [|foo|](): void { //// } //// } //// export class Bar extends Foo { -//// public foo(): void { +//// public [|foo|](): void { //// } //// } //// } //// //// module SimpleInterfaceTest { //// export interface IFoo { -//// foo(): void; +//// [|ifoo|](): void; //// } //// export interface IBar extends IFoo { -//// foo(): void; +//// [|ifoo|](): void; //// } //// } //// //// module SimpleClassInterfaceTest { //// export interface IFoo { -//// foo(): void; +//// [|icfoo|](): void; //// } //// export class Bar implements IFoo { -//// public foo(): void { +//// public [|icfoo|](): void { //// } //// } //// } //// //// module Test { //// export interface IBase { -//// field: string; -//// method(): void; +//// [|field|]: string; +//// [|method|](): void; //// } //// //// export interface IBlah extends IBase { -//// field: string; +//// [|field|]: string; //// } //// //// export interface IBlah2 extends IBlah { -//// field: string; +//// [|field|]: string; //// } //// //// export interface IDerived extends IBlah2 { -//// method(): void; +//// [|method|](): void; //// } //// //// export class Bar implements IDerived { -//// public field: string; -//// public method(): void { } +//// public [|field|]: string; +//// public [|method|](): void { } //// } //// //// export class BarBlah extends Bar { -//// public field: string; +//// public [|field|]: string; //// } //// } //// //// function test() { //// var x = new SimpleClassTest.Bar(); -//// x.fo/*1*/o(); +//// x.[|foo|](); //// //// var y: SimpleInterfaceTest.IBar = null; -//// y.fo/*2*/o(); +//// y.[|ifoo|](); +//// +//// var w: SimpleClassInterfaceTest.Bar = null; +//// w.[|icfoo|](); //// //// var z = new Test.BarBlah(); -//// z.fi/*3*/eld = ""; +//// z.[|field|] = ""; +//// z.[|method|](); //// } ////} -// References to a field declared in a base class. -goTo.marker("1"); -verify.referencesCountIs(3); - -// References to a field declared in a base interface. -goTo.marker("2"); -verify.referencesCountIs(3); - -// References to a field declared in a chain of base class and interfaces. -goTo.marker("3"); -verify.referencesCountIs(6); +verify.rangesWithSameTextReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForPropertiesOfGenericType.ts b/tests/cases/fourslash/referencesForPropertiesOfGenericType.ts index c611c40fc89..a8b08eae506 100644 --- a/tests/cases/fourslash/referencesForPropertiesOfGenericType.ts +++ b/tests/cases/fourslash/referencesForPropertiesOfGenericType.ts @@ -1,15 +1,13 @@ /// ////interface IFoo { -//// /*1*/doSomething(v: T): T; +//// [|doSomething|](v: T): T; ////} //// ////var x: IFoo; -////x.doSomething("ss"); +////x.[|doSomething|]("ss"); //// ////var y: IFoo; -////y.doSomething(12); +////y.[|doSomething|](12); - -goTo.marker("1"); -verify.referencesCountIs(3); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesForStatic.ts b/tests/cases/fourslash/referencesForStatic.ts index 34b34e2d474..c6594006708 100644 --- a/tests/cases/fourslash/referencesForStatic.ts +++ b/tests/cases/fourslash/referencesForStatic.ts @@ -6,35 +6,28 @@ ////var n = 43; //// ////class foo { -//// static n = ''; +//// static [|n|] = ''; //// //// public bar() { -//// foo./*1*/n = "'"; -//// if(foo.n) { -//// var x = foo.n; +//// foo.[|n|] = "'"; +//// if(foo.[|n|]) { +//// var x = foo.[|n|]; //// } //// } ////} //// ////class foo2 { -//// private x = foo./*2*/n; +//// private x = foo.[|n|]; //// constructor() { -//// foo./*3*/n = x; +//// foo.[|n|] = x; //// } //// //// function b(n) { -//// n = foo.n; +//// n = foo.[|n|]; //// } ////} // @Filename: referencesOnStatic_2.ts -////var q = foo.n; +////var q = foo.[|n|]; -goTo.marker("1"); -verify.referencesCountIs(8); - -goTo.marker("2"); -verify.referencesCountIs(8); - -goTo.marker("3"); -verify.referencesCountIs(8); \ No newline at end of file +verify.rangesReferenceEachOther(); diff --git a/tests/cases/fourslash/referencesInComment.ts b/tests/cases/fourslash/referencesInComment.ts index 00f7ba26860..c53a2e6d9b3 100644 --- a/tests/cases/fourslash/referencesInComment.ts +++ b/tests/cases/fourslash/referencesInComment.ts @@ -6,5 +6,5 @@ ////var bar = 0; for (const marker of test.markers()) { - verify.referencesCountIs(0); + verify.referencesAre([]); } diff --git a/tests/cases/fourslash/remoteGetReferences.ts b/tests/cases/fourslash/remoteGetReferences.ts index cdc4ab035a3..d9b6c6e852c 100644 --- a/tests/cases/fourslash/remoteGetReferences.ts +++ b/tests/cases/fourslash/remoteGetReferences.ts @@ -86,19 +86,19 @@ //// //////Remotes //////Type test -////var remoteclsTest: rem/*2*/otefooCls; +////var remoteclsTest: [|remotefooCls|]; //// //////Arguments -////remoteclsTest = new remotefooCls(remoteglo/*4*/balVar); -////remotefoo(remotegl/*3*/obalVar); +////remoteclsTest = new [|remotefooCls|]([|remoteglobalVar|]); +////remotefoo([|remoteglobalVar|]); //// //////Increments -////remotefooCls.remoteclsSVar++; +////[|remotefooCls|].[|remoteclsSVar|]++; ////remotemodTest.remotemodVar++; -/////*1*/remoteglobalVar = remoteglobalVar + remoteglobalVar; +////[|remoteglobalVar|] = [|remoteglobalVar|] + [|remoteglobalVar|]; //// //////ETC - Other cases -////remoteglobalVar = 3; +////[|remoteglobalVar|] = 3; //// //////Find References misses method param ////var @@ -119,18 +119,18 @@ ////}); // @Filename: remoteGetReferences_2.ts -////var remoteglobalVar: number = 2; +////var [|remoteglobalVar|]: number = 2; //// -////class remotefooCls { +////class [|remotefooCls|] { //// //Declare -//// rem/*5*/oteclsVar = 1; -//// static r/*6*/emoteclsSVar = 1; +//// [|remoteclsVar|] = 1; +//// static [|remoteclsSVar|] = 1; //// //// constructor(public remoteclsParam: number) { //// //Increments -//// remoteglobalVar++; -//// this.remoteclsVar++; -//// remotefooCls.remoteclsSVar++; +//// [|remoteglobalVar|]++; +//// this.[|remoteclsVar|]++; +//// [|remotefooCls|].[|remoteclsSVar|]++; //// this.remoteclsParam++; //// remotemodTest.remotemodVar++; //// } @@ -141,8 +141,8 @@ //// var remotefnVar = 1; //// //// //Increments -//// remotefooCls.remoteclsSVar++; -//// remoteglobalVar++; +//// [|remotefooCls|].[|remoteclsSVar|]++; +//// [|remoteglobalVar|]++; //// remotemodTest.remotemodVar++; //// remotefnVar++; //// @@ -155,8 +155,8 @@ //// export var remotemodVar: number; //// //// //Increments -//// remoteglobalVar++; -//// remotefooCls.remoteclsSVar++; +//// [|remoteglobalVar|]++; +//// [|remotefooCls|].[|remoteclsSVar|]++; //// remotemodVar++; //// //// class remotetestCls { @@ -167,8 +167,8 @@ //// static remoteboo = remotefoo; //// //// //Increments -//// remoteglobalVar++; -//// remotefooCls.remoteclsSVar++; +//// [|remoteglobalVar|]++; +//// [|remotefooCls|].[|remoteclsSVar|]++; //// remotemodVar++; //// } //// @@ -177,26 +177,4 @@ //// } ////} -// References to a variable declared in global. -goTo.marker("1"); -verify.referencesCountIs(11); - -// References to a type. -goTo.marker("2"); -verify.referencesCountIs(8); - -// References to a function argument. -goTo.marker("3"); -verify.referencesCountIs(11); - -// References to a class argument. -goTo.marker("4"); -verify.referencesCountIs(11); - -// References to a variable declared in a class. -goTo.marker("5"); -verify.referencesCountIs(2); - -// References to static variable declared in a class. -goTo.marker("6"); -verify.referencesCountIs(6); \ No newline at end of file +verify.rangesWithSameTextReferenceEachOther(); From 6bc8db031ccc02614ac823081d33ad9421a1b85a Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Fri, 24 Jun 2016 09:13:47 -0700 Subject: [PATCH 2/2] Remove unnecessary parameter --- src/harness/fourslash.ts | 6 +++--- tests/cases/fourslash/fourslash.ts | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 8347a0ae8a4..3ce21065b98 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -770,7 +770,7 @@ namespace FourSlash { } } - public verifyRangesWithSameTextReferenceEachOther(ranges?: Range[]) { + public verifyRangesWithSameTextReferenceEachOther() { ts.forEachValue(this.rangesByText(), ranges => this.verifyRangesReferenceEachOther(ranges)); } @@ -2983,8 +2983,8 @@ namespace FourSlashInterface { this.state.verifyRangesReferenceEachOther(ranges); } - public rangesWithSameTextReferenceEachOther(ranges?: FourSlash.Range[]) { - this.state.verifyRangesWithSameTextReferenceEachOther(ranges); + public rangesWithSameTextReferenceEachOther() { + this.state.verifyRangesWithSameTextReferenceEachOther(); } public currentParameterHelpArgumentNameIs(name: string) { diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts index 274eedc1a3e..c7803a023ef 100644 --- a/tests/cases/fourslash/fourslash.ts +++ b/tests/cases/fourslash/fourslash.ts @@ -170,8 +170,7 @@ declare namespace FourSlashInterface { * If `ranges` is omitted, this is `test.ranges()`. */ rangesReferenceEachOther(ranges?: Range[]): void; - //doc - rangesWithSameTextReferenceEachOther(ranges?: Range[]): void; + rangesWithSameTextReferenceEachOther(): void; currentParameterHelpArgumentNameIs(name: string): void; currentParameterSpanIs(parameter: string): void; currentParameterHelpArgumentDocCommentIs(docComment: string): void;