TypeScript/tests/cases/fourslash/referenceInParameterPropertyDeclaration.ts
2019-06-13 12:41:21 -07:00

30 lines
1.3 KiB
TypeScript

/// <reference path='fourslash.ts'/>
// @Filename: file1.ts
//// class Foo {
//// constructor([|private [|{| "isWriteAccess": true, "isDefinition": true, "type": "number", "contextRangeIndex": 0 |}privateParam|]: number|],
//// [|public [|{| "isWriteAccess": true, "isDefinition": true, "type": "string", "contextRangeIndex": 2 |}publicParam|]: string|],
//// [|protected [|{| "isWriteAccess": true, "isDefinition": true, "type": "boolean", "contextRangeIndex": 4 |}protectedParam|]: boolean|]) {
////
//// let localPrivate = [|privateParam|];
//// this.[|{| "isWriteAccess": true |}privateParam|] += 10;
////
//// let localPublic = [|publicParam|];
//// this.[|{| "isWriteAccess": true |}publicParam|] += " Hello!";
////
//// let localProtected = [|protectedParam|];
//// this.[|{| "isWriteAccess": true |}protectedParam|] = false;
//// }
//// }
test.rangesByText().forEach((ranges, text) => {
if (text !== "privateParam" && text !== "publicParam" && text !== "protectedParam") return;
const [r0, r1, r2] = ranges;
const type = r0.marker.data.type;
verify.referenceGroups(ranges, [
{ definition: `(property) Foo.${text}: ${type}`, ranges: [r0, r2] },
{ definition: `(parameter) ${text}: ${type}`, ranges: [r1] }
]);
});