From 36b9ec7c7f4d2a3f62663091e6e491e2b84c060c Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Fri, 4 May 2018 13:25:22 -0700 Subject: [PATCH] Remove verify.referencesAre, verify.referencesOf, verify.rangesReferenceEachOther --- src/harness/fourslash.ts | 75 +++---------------- src/services/findAllReferences.ts | 2 +- .../esModuleInteropFindAllReferences.ts | 4 +- .../esModuleInteropFindAllReferences2.ts | 4 +- ...rPropertyAccessExpressionHeritageClause.ts | 7 +- .../findAllReferencesDynamicImport1.ts | 2 +- .../findAllReferencesDynamicImport2.ts | 8 +- .../findAllReferencesJsDocTypeLiteral.ts | 2 +- tests/cases/fourslash/findAllRefsBadImport.ts | 5 +- .../cases/fourslash/findAllRefsThisKeyword.ts | 2 +- .../findAllRefsThisKeywordMultipleFiles.ts | 2 +- tests/cases/fourslash/findAllRefsTypedef.ts | 4 +- tests/cases/fourslash/fourslash.ts | 11 --- tests/cases/fourslash/server/references01.ts | 18 +++-- .../server/referencesInConfiguredProject.ts | 17 ++++- .../cases/fourslash/tsxFindAllReferences1.ts | 7 +- .../cases/fourslash/tsxFindAllReferences10.ts | 8 +- .../cases/fourslash/tsxFindAllReferences11.ts | 5 +- .../cases/fourslash/tsxFindAllReferences2.ts | 6 +- .../cases/fourslash/tsxFindAllReferences3.ts | 10 +-- .../cases/fourslash/tsxFindAllReferences4.ts | 8 +- .../cases/fourslash/tsxFindAllReferences5.ts | 4 +- .../cases/fourslash/tsxFindAllReferences6.ts | 5 +- .../cases/fourslash/tsxFindAllReferences7.ts | 8 +- .../cases/fourslash/tsxFindAllReferences8.ts | 8 +- .../cases/fourslash/tsxFindAllReferences9.ts | 8 +- .../tsxFindAllReferencesUnionElementType1.ts | 8 +- .../tsxFindAllReferencesUnionElementType2.ts | 4 +- 28 files changed, 102 insertions(+), 150 deletions(-) diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 513c0fdd8f4db..7807d10b0f900 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -1142,32 +1142,6 @@ namespace FourSlash { } } - private verifyReferencesAre(expectedReferences: Range[]) { - const actualReferences = this.getReferencesAtCaret() || []; - - if (actualReferences.length > expectedReferences.length) { - // Find the unaccounted-for reference. - for (const actual of actualReferences) { - if (!ts.forEach(expectedReferences, r => r.pos === actual.textSpan.start)) { - this.raiseError(`A reference ${stringify(actual)} is unaccounted for.`); - } - } - // Probably will never reach here. - this.raiseError(`There are ${actualReferences.length} references but only ${expectedReferences.length} were expected.`); - } - - for (const reference of expectedReferences) { - const { fileName, pos, end } = reference; - if (reference.marker && reference.marker.data) { - const { isWriteAccess, isDefinition } = reference.marker.data as { isWriteAccess?: boolean, isDefinition?: boolean }; - this.verifyReferencesWorker(actualReferences, fileName, pos, end, isWriteAccess, isDefinition); - } - else { - this.verifyReferencesWorker(actualReferences, fileName, pos, end); - } - } - } - private verifyDocumentHighlightsRespectFilesList(files: ReadonlyArray): void { const startFile = this.activeFile.fileName; for (const fileName of files) { @@ -1179,20 +1153,6 @@ namespace FourSlash { } } - public verifyReferencesOf(range: Range, references: Range[]) { - this.goToRangeStart(range); - this.verifyDocumentHighlightsRespectFilesList(unique(references, e => e.fileName)); - this.verifyReferencesAre(references); - } - - public verifyRangesReferenceEachOther(ranges?: Range[]) { - ranges = ranges || this.getRanges(); - assert(ranges.length); - for (const range of ranges) { - this.verifyReferencesOf(range, ranges); - } - } - public verifyReferenceGroups(starts: ArrayOrSingle | ArrayOrSingle, parts: ReadonlyArray | undefined): void { interface ReferenceGroupJson { definition: string | { text: string, range: ts.TextSpan }; @@ -1250,6 +1210,12 @@ namespace FourSlash { } } + // Necessary to have this function since `findReferences` isn't implemented in `client.ts` + public verifyGetReferencesForServerTest(expected: ReadonlyArray): void { + const refs = this.getReferencesAtCaret(); + assert.deepEqual(refs, expected); + } + public verifySingleReferenceGroup(definition: FourSlashInterface.ReferenceGroupDefinition, ranges?: Range[]) { ranges = ranges || this.getRanges(); this.verifyReferenceGroups(ranges, [{ definition, ranges }]); @@ -1314,23 +1280,6 @@ Actual: ${stringify(fullActual)}`); TestState.getDisplayPartsJson(expected), this.messageAtLastKnownMarker("referenced symbol definition display parts")); } - private verifyReferencesWorker(references: ts.ReferenceEntry[], fileName: string, start: number, end: number, isWriteAccess?: boolean, isDefinition?: boolean) { - for (const reference of references) { - if (reference && reference.fileName === fileName && reference.textSpan.start === start && ts.textSpanEnd(reference.textSpan) === end) { - if (typeof isWriteAccess !== "undefined" && reference.isWriteAccess !== isWriteAccess) { - this.raiseError(`verifyReferencesAtPositionListContains failed - item isWriteAccess value does not match, actual: ${reference.isWriteAccess}, expected: ${isWriteAccess}.`); - } - if (typeof isDefinition !== "undefined" && reference.isDefinition !== isDefinition) { - this.raiseError(`verifyReferencesAtPositionListContains failed - item isDefinition value does not match, actual: ${reference.isDefinition}, expected: ${isDefinition}.`); - } - return; - } - } - - 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 getCompletionListAtCaret(options?: ts.GetCompletionsAtPositionOptions): ts.CompletionInfo { return this.languageService.getCompletionsAtPosition(this.activeFile.fileName, this.currentCaretPosition, options); } @@ -4210,10 +4159,6 @@ namespace FourSlashInterface { this.state.verifyTypeOfSymbolAtLocation(range, symbol, expected); } - public referencesOf(start: FourSlash.Range, references: FourSlash.Range[]) { - this.state.verifyReferencesOf(start, references); - } - public referenceGroups(starts: Many | Many, parts: ReferenceGroup[]) { this.state.verifyReferenceGroups(starts, parts); } @@ -4222,12 +4167,12 @@ namespace FourSlashInterface { this.state.verifyNoReferences(markerNameOrRange); } - public singleReferenceGroup(definition: ReferenceGroupDefinition, ranges?: FourSlash.Range[]) { - this.state.verifySingleReferenceGroup(definition, ranges); + public getReferencesForServerTest(expected: ReadonlyArray) { + this.state.verifyGetReferencesForServerTest(expected); } - public rangesReferenceEachOther(ranges?: FourSlash.Range[]) { - this.state.verifyRangesReferenceEachOther(ranges); + public singleReferenceGroup(definition: ReferenceGroupDefinition, ranges?: FourSlash.Range[]) { + this.state.verifySingleReferenceGroup(definition, ranges); } public findReferencesDefinitionDisplayPartsAtCaretAre(expected: ts.SymbolDisplayPart[]) { diff --git a/src/services/findAllReferences.ts b/src/services/findAllReferences.ts index 2be21476fabca..352dd3ae63db2 100644 --- a/src/services/findAllReferences.ts +++ b/src/services/findAllReferences.ts @@ -119,7 +119,7 @@ namespace ts.FindAllReferences { const { node } = def; const symbol = checker.getSymbolAtLocation(node); const displayParts = symbol && SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind( - checker, symbol, node.getSourceFile(), getContainerNode(node), node).displayParts; + checker, symbol, node.getSourceFile(), getContainerNode(node), node).displayParts || [textPart("this")]; return { node, name: "this", kind: ScriptElementKind.variableElement, displayParts }; } case "string": { diff --git a/tests/cases/fourslash/esModuleInteropFindAllReferences.ts b/tests/cases/fourslash/esModuleInteropFindAllReferences.ts index 5ec348bb120a2..4e493e58c246e 100644 --- a/tests/cases/fourslash/esModuleInteropFindAllReferences.ts +++ b/tests/cases/fourslash/esModuleInteropFindAllReferences.ts @@ -4,11 +4,11 @@ // @Filename: /abc.d.ts ////declare module "a" { -//// export const [|x|]: number; +//// export const [|{| "isWriteAccess": true, "isDefinition": true |}x|]: number; ////} // @Filename: /b.ts ////import a from "a"; ////a.[|x|]; -verify.rangesReferenceEachOther(); \ No newline at end of file +verify.singleReferenceGroup("const x: number"); diff --git a/tests/cases/fourslash/esModuleInteropFindAllReferences2.ts b/tests/cases/fourslash/esModuleInteropFindAllReferences2.ts index 55fc6cc89e4cc..e55129a357c80 100644 --- a/tests/cases/fourslash/esModuleInteropFindAllReferences2.ts +++ b/tests/cases/fourslash/esModuleInteropFindAllReferences2.ts @@ -6,10 +6,10 @@ // @Filename: /a.d.ts ////export as namespace abc; -////export const [|x|]: number; +////export const [|{| "isWriteAccess": true, "isDefinition": true |}x|]: number; // @Filename: /b.ts ////import a from "./a"; ////a.[|x|]; -verify.rangesReferenceEachOther(); +verify.singleReferenceGroup('const x: number'); diff --git a/tests/cases/fourslash/findAllReferPropertyAccessExpressionHeritageClause.ts b/tests/cases/fourslash/findAllReferPropertyAccessExpressionHeritageClause.ts index 2a0b6a576229a..61dfb1c33bc9d 100644 --- a/tests/cases/fourslash/findAllReferPropertyAccessExpressionHeritageClause.ts +++ b/tests/cases/fourslash/findAllReferPropertyAccessExpressionHeritageClause.ts @@ -2,12 +2,9 @@ //// class B {} //// function foo() { -//// return {[|B|]: B}; +//// return {[|{| "isWriteAccess": true, "isDefinition": true |}B|]: B}; //// } //// class C extends (foo()).[|B|] {} //// class C1 extends foo().[|B|] {} -const ranges = test.ranges(); -for (const range of ranges) { - verify.referencesOf(range, ranges); -} \ No newline at end of file +verify.singleReferenceGroup("(property) B: typeof B"); diff --git a/tests/cases/fourslash/findAllReferencesDynamicImport1.ts b/tests/cases/fourslash/findAllReferencesDynamicImport1.ts index ad0f261388d57..c2b6f359ba642 100644 --- a/tests/cases/fourslash/findAllReferencesDynamicImport1.ts +++ b/tests/cases/fourslash/findAllReferencesDynamicImport1.ts @@ -6,4 +6,4 @@ //// import("[|./foo|]") //// var x = import("[|./foo|]") -verify.rangesReferenceEachOther(); \ No newline at end of file +verify.singleReferenceGroup('module "/tests/cases/fourslash/foo"'); diff --git a/tests/cases/fourslash/findAllReferencesDynamicImport2.ts b/tests/cases/fourslash/findAllReferencesDynamicImport2.ts index 558e2fed7efd8..6644a55ec1b92 100644 --- a/tests/cases/fourslash/findAllReferencesDynamicImport2.ts +++ b/tests/cases/fourslash/findAllReferencesDynamicImport2.ts @@ -1,12 +1,12 @@ /// // @Filename: foo.ts -//// export function [|bar|]() { return "bar"; } +//// export function [|{| "isWriteAccess": true, "isDefinition": true |}bar|]() { return "bar"; } //// var x = import("./foo"); //// x.then(foo => { -//// foo.[|bar|](); +//// foo.[|bar|](); //// }) -verify.rangesReferenceEachOther(); -verify.rangesAreRenameLocations(); \ No newline at end of file +verify.singleReferenceGroup("function bar(): string"); +verify.rangesAreRenameLocations(); diff --git a/tests/cases/fourslash/findAllReferencesJsDocTypeLiteral.ts b/tests/cases/fourslash/findAllReferencesJsDocTypeLiteral.ts index 5234faf9d64a6..5bcaeb2189939 100644 --- a/tests/cases/fourslash/findAllReferencesJsDocTypeLiteral.ts +++ b/tests/cases/fourslash/findAllReferencesJsDocTypeLiteral.ts @@ -13,4 +13,4 @@ //// */ //// function f(o) { return o.nested.[|great|]; } -verify.rangesReferenceEachOther(); +verify.singleReferenceGroup("(property) great: boolean"); diff --git a/tests/cases/fourslash/findAllRefsBadImport.ts b/tests/cases/fourslash/findAllRefsBadImport.ts index 89a81d81f79cc..e04b72df384a4 100644 --- a/tests/cases/fourslash/findAllRefsBadImport.ts +++ b/tests/cases/fourslash/findAllRefsBadImport.ts @@ -1,7 +1,6 @@ /// -////import { [|ab|] as [|cd|] } from "doesNotExist"; +////import { [|ab|] as [|{| "isWriteAccess": true, "isDefinition": true |}cd|] } from "doesNotExist"; const [r0, r1] = test.ranges(); -verify.referencesOf(r0, [r1]); -verify.referencesOf(r1, [r1]); +verify.referenceGroups([r0, r1], [{ definition: "import cd", ranges: [r1] }]); diff --git a/tests/cases/fourslash/findAllRefsThisKeyword.ts b/tests/cases/fourslash/findAllRefsThisKeyword.ts index 61dd687fd64dc..975b4b37ac20f 100644 --- a/tests/cases/fourslash/findAllRefsThisKeyword.ts +++ b/tests/cases/fourslash/findAllRefsThisKeyword.ts @@ -25,7 +25,7 @@ ////x.[|this|]; const [global, f0, f1, g0, g1, x, y, constructor, method, propDef, propUse] = test.ranges(); -verify.referencesOf(global, [global]); +verify.singleReferenceGroup("this", [global]); verify.referenceGroups(f0, [{ definition: "(parameter) this: any", ranges: [f0, f1] }]); verify.referenceGroups(f1, [{ definition: "this: any", ranges: [f0, f1] }]); verify.referenceGroups(g0, [{ definition: "(parameter) this: any", ranges: [g0, g1] }]); diff --git a/tests/cases/fourslash/findAllRefsThisKeywordMultipleFiles.ts b/tests/cases/fourslash/findAllRefsThisKeywordMultipleFiles.ts index a4bab7f876c89..d94f2993d1df8 100644 --- a/tests/cases/fourslash/findAllRefsThisKeywordMultipleFiles.ts +++ b/tests/cases/fourslash/findAllRefsThisKeywordMultipleFiles.ts @@ -12,4 +12,4 @@ //// // different 'this' //// function f(this) { return this; } -verify.rangesReferenceEachOther(); +verify.singleReferenceGroup("this"); diff --git a/tests/cases/fourslash/findAllRefsTypedef.ts b/tests/cases/fourslash/findAllRefsTypedef.ts index c7e2527405d57..ecd690c10e58d 100644 --- a/tests/cases/fourslash/findAllRefsTypedef.ts +++ b/tests/cases/fourslash/findAllRefsTypedef.ts @@ -5,11 +5,11 @@ // @Filename: /a.js /////** //// * @typedef I {Object} -//// * @prop [|p|] {number} +//// * @prop [|{| "isWriteAccess": true, "isDefinition": true |}p|] {number} //// */ //// /////** @type {I} */ ////let x; ////x.[|p|]; -verify.rangesReferenceEachOther(); +verify.singleReferenceGroup("(property) p: number"); diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts index cf554831434ed..8a7aae00c2429 100644 --- a/tests/cases/fourslash/fourslash.ts +++ b/tests/cases/fourslash/fourslash.ts @@ -253,12 +253,6 @@ declare namespace FourSlashInterface { noReferences(markerNameOrRange?: string | Range): void; symbolAtLocation(startRange: Range, ...declarationRanges: Range[]): void; typeOfSymbolAtLocation(range: Range, symbol: any, expected: string): void; - /** - * @deprecated, prefer 'referenceGroups' - * Like `referencesAre`, but goes to `start` first. - * `start` should be included in `references`. - */ - referencesOf(start: Range, references: Range[]): void; /** * For each of starts, asserts the ranges that are referenced from there. * This uses the 'findReferences' command instead of 'getReferencesAtPosition', so references are grouped by their definition. @@ -268,11 +262,6 @@ declare namespace FourSlashInterface { rangesAreOccurrences(isWriteAccess?: boolean): void; rangesWithSameTextAreRenameLocations(): void; rangesAreRenameLocations(options?: Range[] | { findInStrings?: boolean, findInComments?: boolean, ranges?: Range[] }); - /** - * Performs `referencesOf` for every range on the whole set. - * If `ranges` is omitted, this is `test.ranges()`. - */ - rangesReferenceEachOther(ranges?: Range[]): void; findReferencesDefinitionDisplayPartsAtCaretAre(expected: ts.SymbolDisplayPart[]): void; currentParameterHelpArgumentNameIs(name: string): void; currentParameterSpanIs(parameter: string): void; diff --git a/tests/cases/fourslash/server/references01.ts b/tests/cases/fourslash/server/references01.ts index 528f79de5b49b..02e0c16f9c76f 100644 --- a/tests/cases/fourslash/server/references01.ts +++ b/tests/cases/fourslash/server/references01.ts @@ -2,14 +2,22 @@ // Global class reference. -// @Filename: referencesForGlobals_1.ts -////class [|globalClass|] { +// @Filename: /referencesForGlobals_1.ts +////class [|{| "isWriteAccess": true, "isDefinition": true |}globalClass|] { //// public f() { } ////} -// @Filename: referencesForGlobals_2.ts +// @Filename: /referencesForGlobals_2.ts /////// ////var c = [|globalClass|](); -// Must reverse ranges so that referencesForGlobals_2 goes first -- otherwise referencesForGlobals_1 won't pick it up. -verify.rangesReferenceEachOther(test.ranges().reverse()); +const [r0, r1] = test.ranges(); +goTo.rangeStart(r1); +verify.getReferencesForServerTest([ + { fileName: "/referencesForGlobals_1.ts", isDefinition: true, isWriteAccess: true, textSpan: toSpan(r0) }, + { fileName: "/referencesForGlobals_2.ts", isDefinition: false, isWriteAccess: false, textSpan: toSpan(r1) }, +]); + +function toSpan(r: FourSlashInterface.Range) { + return { start: r.pos, length: r.end - r.pos }; +} diff --git a/tests/cases/fourslash/server/referencesInConfiguredProject.ts b/tests/cases/fourslash/server/referencesInConfiguredProject.ts index 109b5e36e4d68..87ca2da993138 100644 --- a/tests/cases/fourslash/server/referencesInConfiguredProject.ts +++ b/tests/cases/fourslash/server/referencesInConfiguredProject.ts @@ -2,15 +2,24 @@ // Global class reference. -// @Filename: referencesForGlobals_1.ts +// @Filename: /referencesForGlobals_1.ts ////class [|globalClass|] { //// public f() { } ////} -// @Filename: referencesForGlobals_2.ts +// @Filename: /referencesForGlobals_2.ts ////var c = [|globalClass|](); -// @Filename: tsconfig.json +// @Filename: /tsconfig.json ////{ "files": ["referencesForGlobals_1.ts", "referencesForGlobals_2.ts"] } -verify.rangesReferenceEachOther(); +const [r0, r1] = test.ranges(); +goTo.rangeStart(r1); +verify.getReferencesForServerTest([ + { fileName: "/referencesForGlobals_1.ts", isDefinition: true, isWriteAccess: true, textSpan: toSpan(r0) }, + { fileName: "/referencesForGlobals_2.ts", isDefinition: false, isWriteAccess: false, textSpan: toSpan(r1) }, +]); + +function toSpan(r: FourSlashInterface.Range) { + return { start: r.pos, length: r.end - r.pos }; +} diff --git a/tests/cases/fourslash/tsxFindAllReferences1.ts b/tests/cases/fourslash/tsxFindAllReferences1.ts index 9b55901ba68c9..550dd05606cc0 100644 --- a/tests/cases/fourslash/tsxFindAllReferences1.ts +++ b/tests/cases/fourslash/tsxFindAllReferences1.ts @@ -4,7 +4,7 @@ //// declare module JSX { //// interface Element { } //// interface IntrinsicElements { -//// [|div|]: { +//// [|{| "isWriteAccess": true, "isDefinition": true |}div|]: { //// name?: string; //// isOpen?: boolean; //// }; @@ -13,4 +13,7 @@ //// } //// var x = <[|div|] />; -verify.rangesReferenceEachOther(); \ No newline at end of file +verify.singleReferenceGroup(`(property) JSX.IntrinsicElements.div: { + name?: string; + isOpen?: boolean; +}`); diff --git a/tests/cases/fourslash/tsxFindAllReferences10.ts b/tests/cases/fourslash/tsxFindAllReferences10.ts index a027671ec3d4d..04ac864e4f245 100644 --- a/tests/cases/fourslash/tsxFindAllReferences10.ts +++ b/tests/cases/fourslash/tsxFindAllReferences10.ts @@ -15,7 +15,7 @@ //// className?: string; //// } //// interface ButtonProps extends ClickableProps { -//// [|onClick|](event?: React.MouseEvent): void; +//// [|{| "isWriteAccess": true, "isDefinition": true |}onClick|](event?: React.MouseEvent): void; //// } //// interface LinkProps extends ClickableProps { //// goTo: string; @@ -25,9 +25,9 @@ //// declare function MainButton(props: ButtonProps | LinkProps): JSX.Element; //// let opt = ; //// let opt = ; -//// let opt = {}} />; -//// let opt = {}} ignore-prop />; +//// let opt = {}} />; +//// let opt = {}} ignore-prop />; //// let opt = ; //// let opt = ; -verify.rangesReferenceEachOther(); \ No newline at end of file +verify.singleReferenceGroup("(method) ButtonProps.onClick(event?: any): void"); diff --git a/tests/cases/fourslash/tsxFindAllReferences11.ts b/tests/cases/fourslash/tsxFindAllReferences11.ts index ef2f7722243ed..8c7e7a4690937 100644 --- a/tests/cases/fourslash/tsxFindAllReferences11.ts +++ b/tests/cases/fourslash/tsxFindAllReferences11.ts @@ -23,7 +23,6 @@ //// declare function MainButton(buttonProps: ButtonProps): JSX.Element; //// declare function MainButton(linkProps: LinkProps): JSX.Element; //// declare function MainButton(props: ButtonProps | LinkProps): JSX.Element; -//// let opt = ; // r1 +//// let opt = ; -const [r1] = test.ranges(); -verify.referencesOf(r1, [r1]); \ No newline at end of file +verify.singleReferenceGroup("(property) wrong: true"); diff --git a/tests/cases/fourslash/tsxFindAllReferences2.ts b/tests/cases/fourslash/tsxFindAllReferences2.ts index 8522874865a59..e7fda5ab30828 100644 --- a/tests/cases/fourslash/tsxFindAllReferences2.ts +++ b/tests/cases/fourslash/tsxFindAllReferences2.ts @@ -5,12 +5,12 @@ //// interface Element { } //// interface IntrinsicElements { //// div: { -//// [|name|]?: string; +//// [|{| "isWriteAccess": true, "isDefinition": true |}name|]?: string; //// isOpen?: boolean; //// }; //// span: { n: string; }; //// } //// } -//// var x =
; +//// var x =
; -verify.rangesReferenceEachOther(); \ No newline at end of file +verify.singleReferenceGroup("(property) name?: string"); diff --git a/tests/cases/fourslash/tsxFindAllReferences3.ts b/tests/cases/fourslash/tsxFindAllReferences3.ts index 2f78cc08ba979..2682e01e7d1d2 100644 --- a/tests/cases/fourslash/tsxFindAllReferences3.ts +++ b/tests/cases/fourslash/tsxFindAllReferences3.ts @@ -9,11 +9,11 @@ //// } //// class MyClass { //// props: { -//// [|name|]?: string; +//// [|{| "isWriteAccess": true, "isDefinition": true |}name|]?: string; //// size?: number; //// } -//// -//// -//// var x = ; +//// +//// +//// var x = ; -verify.rangesReferenceEachOther(); \ No newline at end of file +verify.singleReferenceGroup("(property) name?: string"); diff --git a/tests/cases/fourslash/tsxFindAllReferences4.ts b/tests/cases/fourslash/tsxFindAllReferences4.ts index a1309bfaef961..c932ea57f36c1 100644 --- a/tests/cases/fourslash/tsxFindAllReferences4.ts +++ b/tests/cases/fourslash/tsxFindAllReferences4.ts @@ -7,13 +7,13 @@ //// } //// interface ElementAttributesProperty { props } //// } -//// class [|MyClass|] { +//// class [|{| "isWriteAccess": true, "isDefinition": true |}MyClass|] { //// props: { //// name?: string; //// size?: number; //// } -//// -//// +//// +//// //// var x = <[|MyClass|] name='hello'>; -verify.rangesReferenceEachOther(); \ No newline at end of file +verify.singleReferenceGroup("class MyClass"); diff --git a/tests/cases/fourslash/tsxFindAllReferences5.ts b/tests/cases/fourslash/tsxFindAllReferences5.ts index 018b7568df15a..9358dd73dc5eb 100644 --- a/tests/cases/fourslash/tsxFindAllReferences5.ts +++ b/tests/cases/fourslash/tsxFindAllReferences5.ts @@ -15,11 +15,11 @@ //// propString: string //// optional?: boolean //// } -//// declare function [|Opt|](attributes: OptionPropBag): JSX.Element; +//// declare function [|{| "isWriteAccess": true, "isDefinition": true |}Opt|](attributes: OptionPropBag): JSX.Element; //// let opt = <[|Opt|] />; //// let opt1 = <[|Opt|] propx={100} propString />; //// let opt2 = <[|Opt|] propx={100} optional/>; //// let opt3 = <[|Opt|] wrong />; //// let opt4 = <[|Opt|] propx={100} propString="hi" />; -verify.rangesReferenceEachOther(); \ No newline at end of file +verify.singleReferenceGroup("function Opt(attributes: OptionPropBag): JSX.Element"); diff --git a/tests/cases/fourslash/tsxFindAllReferences6.ts b/tests/cases/fourslash/tsxFindAllReferences6.ts index ad689a53baff1..c0e119a4e456e 100644 --- a/tests/cases/fourslash/tsxFindAllReferences6.ts +++ b/tests/cases/fourslash/tsxFindAllReferences6.ts @@ -17,7 +17,6 @@ //// optional?: boolean //// } //// declare function Opt(attributes: OptionPropBag): JSX.Element; -//// let opt = ; //r1 +//// let opt = ; -const [r1] = test.ranges(); -verify.referencesOf(r1, [r1]); \ No newline at end of file +verify.singleReferenceGroup("(property) wrong: true"); diff --git a/tests/cases/fourslash/tsxFindAllReferences7.ts b/tests/cases/fourslash/tsxFindAllReferences7.ts index b1f5231a19859..37ea60c7a3888 100644 --- a/tests/cases/fourslash/tsxFindAllReferences7.ts +++ b/tests/cases/fourslash/tsxFindAllReferences7.ts @@ -11,14 +11,14 @@ //// interface ElementAttributesProperty { props; } //// } //// interface OptionPropBag { -//// [|propx|]: number +//// [|{| "isWriteAccess": true, "isDefinition": true |}propx|]: number //// propString: string //// optional?: boolean //// } //// declare function Opt(attributes: OptionPropBag): JSX.Element; //// let opt = ; -//// let opt1 = ; -//// let opt2 = ; +//// let opt1 = ; +//// let opt2 = ; //// let opt3 = ; -verify.rangesReferenceEachOther(); \ No newline at end of file +verify.singleReferenceGroup("(property) OptionPropBag.propx: number"); diff --git a/tests/cases/fourslash/tsxFindAllReferences8.ts b/tests/cases/fourslash/tsxFindAllReferences8.ts index 434e8cf330380..0c2164888920a 100644 --- a/tests/cases/fourslash/tsxFindAllReferences8.ts +++ b/tests/cases/fourslash/tsxFindAllReferences8.ts @@ -20,9 +20,9 @@ //// interface LinkProps extends ClickableProps { //// goTo: string; //// } -//// declare function [|MainButton|](buttonProps: ButtonProps): JSX.Element; -//// declare function [|MainButton|](linkProps: LinkProps): JSX.Element; -//// declare function [|MainButton|](props: ButtonProps | LinkProps): JSX.Element; +//// declare function [|{| "isWriteAccess": true, "isDefinition": true |}MainButton|](buttonProps: ButtonProps): JSX.Element; +//// declare function [|{| "isWriteAccess": true, "isDefinition": true |}MainButton|](linkProps: LinkProps): JSX.Element; +//// declare function [|{| "isWriteAccess": true, "isDefinition": true |}MainButton|](props: ButtonProps | LinkProps): JSX.Element; //// let opt = <[|MainButton|] />; //// let opt = <[|MainButton|] children="chidlren" />; //// let opt = <[|MainButton|] onClick={()=>{}} />; @@ -30,4 +30,4 @@ //// let opt = <[|MainButton|] goTo="goTo" />; //// let opt = <[|MainButton|] wrong />; -verify.rangesReferenceEachOther(); \ No newline at end of file +verify.singleReferenceGroup("function MainButton(buttonProps: ButtonProps): JSX.Element (+2 overloads)"); diff --git a/tests/cases/fourslash/tsxFindAllReferences9.ts b/tests/cases/fourslash/tsxFindAllReferences9.ts index 5ac6ad344d8c3..9fe02500ad9b9 100644 --- a/tests/cases/fourslash/tsxFindAllReferences9.ts +++ b/tests/cases/fourslash/tsxFindAllReferences9.ts @@ -18,7 +18,7 @@ //// onClick(event?: React.MouseEvent): void; //// } //// interface LinkProps extends ClickableProps { -//// [|goTo|]: string; +//// [|{| "isWriteAccess": true, "isDefinition": true |}goTo|]: string; //// } //// declare function MainButton(buttonProps: ButtonProps): JSX.Element; //// declare function MainButton(linkProps: LinkProps): JSX.Element; @@ -27,8 +27,8 @@ //// let opt = ; //// let opt = {}} />; //// let opt = {}} ignore-prop />; -//// let opt = ; -//// let opt = ; +//// let opt = ; +//// let opt = ; //// let opt = ; -verify.rangesReferenceEachOther(); \ No newline at end of file +verify.singleReferenceGroup("(property) LinkProps.goTo: string"); diff --git a/tests/cases/fourslash/tsxFindAllReferencesUnionElementType1.ts b/tests/cases/fourslash/tsxFindAllReferencesUnionElementType1.ts index e7c2a1a567c9f..87adbc11873eb 100644 --- a/tests/cases/fourslash/tsxFindAllReferencesUnionElementType1.ts +++ b/tests/cases/fourslash/tsxFindAllReferencesUnionElementType1.ts @@ -18,7 +18,11 @@ //// return

World

; //// } -//// var [|SFCComp|] = SFC1 || SFC2; +//// var [|{| "isWriteAccess": true, "isDefinition": true |}SFCComp|] = SFC1 || SFC2; //// <[|SFCComp|] x={ "hi" } /> -verify.rangesReferenceEachOther(); \ No newline at end of file +verify.singleReferenceGroup(`var SFCComp: ((prop: { + x: number; +}) => JSX.Element) | ((prop: { + x: boolean; +}) => JSX.Element)`); diff --git a/tests/cases/fourslash/tsxFindAllReferencesUnionElementType2.ts b/tests/cases/fourslash/tsxFindAllReferencesUnionElementType2.ts index 3089279b2e7d0..2498c8bf99678 100644 --- a/tests/cases/fourslash/tsxFindAllReferencesUnionElementType2.ts +++ b/tests/cases/fourslash/tsxFindAllReferencesUnionElementType2.ts @@ -17,7 +17,7 @@ //// private method() { } //// } -//// var [|RCComp|] = RC1 || RC2; +//// var [|{| "isWriteAccess": true, "isDefinition": true |}RCComp|] = RC1 || RC2; //// <[|RCComp|] /> -verify.rangesReferenceEachOther(); \ No newline at end of file +verify.singleReferenceGroup("var RCComp: typeof RC1");