File: findAllReferencesOfConstructor.ts

package info (click to toggle)
node-typescript 4.1.3-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 396,552 kB
  • sloc: javascript: 1,444,377; makefile: 7; sh: 3
file content (53 lines) | stat: -rw-r--r-- 1,605 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/// <reference path="fourslash.ts" />

// @Filename: a.ts
////export class C {
////    [|[|{| "contextRangeIndex": 0, "isDefinition": true |}constructor|](n: number);|]
////    [|[|{| "contextRangeIndex": 2, "isDefinition": true |}constructor|]();|]
////    [|[|{| "contextRangeIndex": 4, "isDefinition": true |}constructor|](n?: number){}|]
////    static f() {
////        this.f();
////        new [|this|]();
////    }
////}
////new [|C|]();
// Does not handle alias.
////const D = C;
////new D();

// @Filename: b.ts
////import { C } from "./a";
////new [|C|]();

// @Filename: c.ts
////import { C } from "./a";
////class D extends C {
////    constructor() {
////        [|super|]();
////        super.method();
////    }
////    method() { super(); }
////}
// Does not find 'super()' calls for a class that merely implements 'C',
// since those must be calling a different constructor.
////class E implements C {
////    constructor() { super(); }
////}

// Works with qualified names too
// @Filename: d.ts
////import * as a from "./a";
////new a.[|C|]();
////class d extends a.C { constructor() { [|super|](); }

const [a0Def, a0, a1Def, a1, a2Def, a2, a3, a4, b0, c0, d0, d1] = test.ranges();
verify.referenceGroups([a0, a2], defs("class C"));
verify.referenceGroups(a1, defs("class C"));

function defs(definition: string) {
    return [
        { definition, ranges: [a0, a1, a2, a3, d0, d1, a4] },
        { definition: "(alias) class C\nimport C", ranges: [b0] },
        { definition: "(alias) class C\nimport C", ranges: [c0] }
    ]
}