File: signatureHelpExplicitTypeArguments.ts

package info (click to toggle)
node-typescript 4.8.4%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 523,068 kB
  • sloc: javascript: 1,735,777; makefile: 7; sh: 1
file content (37 lines) | stat: -rw-r--r-- 1,526 bytes parent folder | download | duplicates (3)
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
/// <reference path='fourslash.ts'/>

//// declare function f<T = boolean, U = string>(x: T, y: U): T;
//// f<number, string>(/*1*/);
//// f(/*2*/);
//// f<number>(/*3*/);
//// f<number, string, boolean>(/*4*/);

//// interface A { a: number }
//// interface B extends A { b: string }
//// declare function g<T, U, V extends A = B>(x: T, y: U, z: V): T;
//// declare function h<T, U, V extends A>(x: T, y: U, z: V): T;
//// declare function j<T, U, V = B>(x: T, y: U, z: V): T;
//// g(/*5*/);
//// h(/*6*/);
//// j(/*7*/);
//// g<number>(/*8*/);
//// h<number>(/*9*/);
//// j<number>(/*10*/);

verify.signatureHelp(
    { marker: "1", text: "f(x: number, y: string): number" },
    { marker: "2", text: "f(x: boolean, y: string): boolean" },
    // too few -- fill in rest with default
    { marker: "3", text: "f(x: number, y: string): number" },
    // too many -- ignore extra type arguments
    { marker: "4", text: "f(x: number, y: string): number" },

    // not matched signature and no type arguments
    { marker: "5", text: "g(x: unknown, y: unknown, z: B): unknown" },
    { marker: "6", text: "h(x: unknown, y: unknown, z: A): unknown" },
    { marker: "7", text: "j(x: unknown, y: unknown, z: B): unknown" },
    // not matched signature and too few type arguments
    { marker: "8", text: "g(x: number, y: unknown, z: B): number" },
    { marker: "9", text: "h(x: number, y: unknown, z: A): number" },
    { marker: "10", text: "j(x: number, y: unknown, z: B): number" },
);