Skip to content

Commit c929e74

Browse files
authored
Add [Constructor]Parameter types to lib.d.ts (#26243)
1 parent cc3d011 commit c929e74

20 files changed

+542
-262
lines changed

src/lib/es5.d.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1378,6 +1378,16 @@ type Extract<T, U> = T extends U ? T : never;
13781378
*/
13791379
type NonNullable<T> = T extends null | undefined ? never : T;
13801380

1381+
/**
1382+
* Obtain the parameters of a function type in a tuple
1383+
*/
1384+
type Parameters<T extends (...args: any[]) => any> = T extends (...args: infer P) => any ? P : never;
1385+
1386+
/**
1387+
* Obtain the parameters of a constructor function type in a tuple
1388+
*/
1389+
type ConstructorParameters<T extends new (...args: any[]) => any> = T extends new (...args: infer P) => any ? P : never;
1390+
13811391
/**
13821392
* Obtain the return type of a function type
13831393
*/

tests/baselines/reference/genericRestParameters1.errors.txt

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
tests/cases/conformance/types/rest/genericRestParameters1.ts(22,1): error TS2556: Expected 3 arguments, but got 1 or more.
22
tests/cases/conformance/types/rest/genericRestParameters1.ts(31,1): error TS2556: Expected 3 arguments, but got 1 or more.
3-
tests/cases/conformance/types/rest/genericRestParameters1.ts(166,1): error TS2322: Type '(a: never) => void' is not assignable to type '(...args: any[]) => void'.
3+
tests/cases/conformance/types/rest/genericRestParameters1.ts(133,40): error TS2344: Type '(...args: T) => void' does not satisfy the constraint '(...args: any[]) => any'.
4+
tests/cases/conformance/types/rest/genericRestParameters1.ts(134,51): error TS2344: Type 'new (...args: T) => void' does not satisfy the constraint 'new (...args: any[]) => any'.
5+
tests/cases/conformance/types/rest/genericRestParameters1.ts(135,23): error TS2344: Type 'Function' does not satisfy the constraint '(...args: any[]) => any'.
6+
Type 'Function' provides no match for the signature '(...args: any[]): any'.
7+
tests/cases/conformance/types/rest/genericRestParameters1.ts(164,1): error TS2322: Type '(a: never) => void' is not assignable to type '(...args: any[]) => void'.
48
Types of parameters 'a' and 'args' are incompatible.
59
Type 'any' is not assignable to type 'never'.
610

711

8-
==== tests/cases/conformance/types/rest/genericRestParameters1.ts (3 errors) ====
12+
==== tests/cases/conformance/types/rest/genericRestParameters1.ts (6 errors) ====
913
declare let f1: (...x: [number, string, boolean]) => void;
1014
declare let f2: (x0: number, x1: string, x2: boolean) => void;
1115

@@ -136,17 +140,22 @@ tests/cases/conformance/types/rest/genericRestParameters1.ts(166,1): error TS232
136140

137141
const c30 = f30(42, x => "" + x, x => x + 1); // [(x: number) => string, (x: number) => number]
138142

139-
type Parameters<T extends Function> = T extends ((...args: infer U) => any) | (new(...args: infer U) => any) ? U : any[];
140-
141143
type T01 = Parameters<(x: number, y: string, z: boolean) => void>;
142144
type T02 = Parameters<(...args: [number, string, boolean]) => void>;
143-
type T03 = Parameters<new (x: number, y: string, z: boolean) => void>;
144-
type T04 = Parameters<new (...args: [number, string, boolean]) => void>;
145+
type T03 = ConstructorParameters<new (x: number, y: string, z: boolean) => void>;
146+
type T04 = ConstructorParameters<new (...args: [number, string, boolean]) => void>;
145147
type T05<T> = Parameters<(...args: T[]) => void>;
146-
type T06<T> = Parameters<new (...args: []) => void>;
148+
type T06<T> = ConstructorParameters<new (...args: []) => void>;
147149
type T07<T extends any[]> = Parameters<(...args: T) => void>;
148-
type T08<T extends any[]> = Parameters<new (...args: T) => void>;
150+
~~~~~~~~~~~~~~~~~~~~
151+
!!! error TS2344: Type '(...args: T) => void' does not satisfy the constraint '(...args: any[]) => any'.
152+
type T08<T extends any[]> = ConstructorParameters<new (...args: T) => void>;
153+
~~~~~~~~~~~~~~~~~~~~~~~~
154+
!!! error TS2344: Type 'new (...args: T) => void' does not satisfy the constraint 'new (...args: any[]) => any'.
149155
type T09 = Parameters<Function>;
156+
~~~~~~~~
157+
!!! error TS2344: Type 'Function' does not satisfy the constraint '(...args: any[]) => any'.
158+
!!! error TS2344: Type 'Function' provides no match for the signature '(...args: any[]): any'.
150159

151160
type Record1 = {
152161
move: [number, 'left' | 'right'];

tests/baselines/reference/genericRestParameters1.js

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -125,16 +125,14 @@ declare function f30<T, U extends ((x: T) => any)[]>(x: T, ...args: U): U;
125125

126126
const c30 = f30(42, x => "" + x, x => x + 1); // [(x: number) => string, (x: number) => number]
127127

128-
type Parameters<T extends Function> = T extends ((...args: infer U) => any) | (new(...args: infer U) => any) ? U : any[];
129-
130128
type T01 = Parameters<(x: number, y: string, z: boolean) => void>;
131129
type T02 = Parameters<(...args: [number, string, boolean]) => void>;
132-
type T03 = Parameters<new (x: number, y: string, z: boolean) => void>;
133-
type T04 = Parameters<new (...args: [number, string, boolean]) => void>;
130+
type T03 = ConstructorParameters<new (x: number, y: string, z: boolean) => void>;
131+
type T04 = ConstructorParameters<new (...args: [number, string, boolean]) => void>;
134132
type T05<T> = Parameters<(...args: T[]) => void>;
135-
type T06<T> = Parameters<new (...args: []) => void>;
133+
type T06<T> = ConstructorParameters<new (...args: []) => void>;
136134
type T07<T extends any[]> = Parameters<(...args: T) => void>;
137-
type T08<T extends any[]> = Parameters<new (...args: T) => void>;
135+
type T08<T extends any[]> = ConstructorParameters<new (...args: T) => void>;
138136
type T09 = Parameters<Function>;
139137

140138
type Record1 = {
@@ -327,15 +325,14 @@ declare const g22: (z?: boolean | undefined) => string[];
327325
declare const g23: () => string[];
328326
declare function f30<T, U extends ((x: T) => any)[]>(x: T, ...args: U): U;
329327
declare const c30: [(x: number) => string, (x: number) => number];
330-
declare type Parameters<T extends Function> = T extends ((...args: infer U) => any) | (new (...args: infer U) => any) ? U : any[];
331328
declare type T01 = Parameters<(x: number, y: string, z: boolean) => void>;
332329
declare type T02 = Parameters<(...args: [number, string, boolean]) => void>;
333-
declare type T03 = Parameters<new (x: number, y: string, z: boolean) => void>;
334-
declare type T04 = Parameters<new (...args: [number, string, boolean]) => void>;
330+
declare type T03 = ConstructorParameters<new (x: number, y: string, z: boolean) => void>;
331+
declare type T04 = ConstructorParameters<new (...args: [number, string, boolean]) => void>;
335332
declare type T05<T> = Parameters<(...args: T[]) => void>;
336-
declare type T06<T> = Parameters<new (...args: []) => void>;
333+
declare type T06<T> = ConstructorParameters<new (...args: []) => void>;
337334
declare type T07<T extends any[]> = Parameters<(...args: T) => void>;
338-
declare type T08<T extends any[]> = Parameters<new (...args: T) => void>;
335+
declare type T08<T extends any[]> = ConstructorParameters<new (...args: T) => void>;
339336
declare type T09 = Parameters<Function>;
340337
declare type Record1 = {
341338
move: [number, 'left' | 'right'];

tests/baselines/reference/genericRestParameters1.symbols

Lines changed: 91 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -494,160 +494,149 @@ const c30 = f30(42, x => "" + x, x => x + 1); // [(x: number) => string, (x: nu
494494
>x : Symbol(x, Decl(genericRestParameters1.ts, 124, 32))
495495
>x : Symbol(x, Decl(genericRestParameters1.ts, 124, 32))
496496

497-
type Parameters<T extends Function> = T extends ((...args: infer U) => any) | (new(...args: infer U) => any) ? U : any[];
498-
>Parameters : Symbol(Parameters, Decl(genericRestParameters1.ts, 124, 45))
499-
>T : Symbol(T, Decl(genericRestParameters1.ts, 126, 16))
500-
>Function : Symbol(Function, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
501-
>T : Symbol(T, Decl(genericRestParameters1.ts, 126, 16))
502-
>args : Symbol(args, Decl(genericRestParameters1.ts, 126, 50))
503-
>U : Symbol(U, Decl(genericRestParameters1.ts, 126, 64), Decl(genericRestParameters1.ts, 126, 97))
504-
>args : Symbol(args, Decl(genericRestParameters1.ts, 126, 83))
505-
>U : Symbol(U, Decl(genericRestParameters1.ts, 126, 64), Decl(genericRestParameters1.ts, 126, 97))
506-
>U : Symbol(U, Decl(genericRestParameters1.ts, 126, 64), Decl(genericRestParameters1.ts, 126, 97))
507-
508497
type T01 = Parameters<(x: number, y: string, z: boolean) => void>;
509-
>T01 : Symbol(T01, Decl(genericRestParameters1.ts, 126, 121))
510-
>Parameters : Symbol(Parameters, Decl(genericRestParameters1.ts, 124, 45))
511-
>x : Symbol(x, Decl(genericRestParameters1.ts, 128, 23))
512-
>y : Symbol(y, Decl(genericRestParameters1.ts, 128, 33))
513-
>z : Symbol(z, Decl(genericRestParameters1.ts, 128, 44))
498+
>T01 : Symbol(T01, Decl(genericRestParameters1.ts, 124, 45))
499+
>Parameters : Symbol(Parameters, Decl(lib.es5.d.ts, --, --))
500+
>x : Symbol(x, Decl(genericRestParameters1.ts, 126, 23))
501+
>y : Symbol(y, Decl(genericRestParameters1.ts, 126, 33))
502+
>z : Symbol(z, Decl(genericRestParameters1.ts, 126, 44))
514503

515504
type T02 = Parameters<(...args: [number, string, boolean]) => void>;
516-
>T02 : Symbol(T02, Decl(genericRestParameters1.ts, 128, 66))
517-
>Parameters : Symbol(Parameters, Decl(genericRestParameters1.ts, 124, 45))
518-
>args : Symbol(args, Decl(genericRestParameters1.ts, 129, 23))
519-
520-
type T03 = Parameters<new (x: number, y: string, z: boolean) => void>;
521-
>T03 : Symbol(T03, Decl(genericRestParameters1.ts, 129, 68))
522-
>Parameters : Symbol(Parameters, Decl(genericRestParameters1.ts, 124, 45))
523-
>x : Symbol(x, Decl(genericRestParameters1.ts, 130, 27))
524-
>y : Symbol(y, Decl(genericRestParameters1.ts, 130, 37))
525-
>z : Symbol(z, Decl(genericRestParameters1.ts, 130, 48))
526-
527-
type T04 = Parameters<new (...args: [number, string, boolean]) => void>;
528-
>T04 : Symbol(T04, Decl(genericRestParameters1.ts, 130, 70))
529-
>Parameters : Symbol(Parameters, Decl(genericRestParameters1.ts, 124, 45))
530-
>args : Symbol(args, Decl(genericRestParameters1.ts, 131, 27))
505+
>T02 : Symbol(T02, Decl(genericRestParameters1.ts, 126, 66))
506+
>Parameters : Symbol(Parameters, Decl(lib.es5.d.ts, --, --))
507+
>args : Symbol(args, Decl(genericRestParameters1.ts, 127, 23))
508+
509+
type T03 = ConstructorParameters<new (x: number, y: string, z: boolean) => void>;
510+
>T03 : Symbol(T03, Decl(genericRestParameters1.ts, 127, 68))
511+
>ConstructorParameters : Symbol(ConstructorParameters, Decl(lib.es5.d.ts, --, --))
512+
>x : Symbol(x, Decl(genericRestParameters1.ts, 128, 38))
513+
>y : Symbol(y, Decl(genericRestParameters1.ts, 128, 48))
514+
>z : Symbol(z, Decl(genericRestParameters1.ts, 128, 59))
515+
516+
type T04 = ConstructorParameters<new (...args: [number, string, boolean]) => void>;
517+
>T04 : Symbol(T04, Decl(genericRestParameters1.ts, 128, 81))
518+
>ConstructorParameters : Symbol(ConstructorParameters, Decl(lib.es5.d.ts, --, --))
519+
>args : Symbol(args, Decl(genericRestParameters1.ts, 129, 38))
531520

532521
type T05<T> = Parameters<(...args: T[]) => void>;
533-
>T05 : Symbol(T05, Decl(genericRestParameters1.ts, 131, 72))
522+
>T05 : Symbol(T05, Decl(genericRestParameters1.ts, 129, 83))
523+
>T : Symbol(T, Decl(genericRestParameters1.ts, 130, 9))
524+
>Parameters : Symbol(Parameters, Decl(lib.es5.d.ts, --, --))
525+
>args : Symbol(args, Decl(genericRestParameters1.ts, 130, 26))
526+
>T : Symbol(T, Decl(genericRestParameters1.ts, 130, 9))
527+
528+
type T06<T> = ConstructorParameters<new (...args: []) => void>;
529+
>T06 : Symbol(T06, Decl(genericRestParameters1.ts, 130, 49))
530+
>T : Symbol(T, Decl(genericRestParameters1.ts, 131, 9))
531+
>ConstructorParameters : Symbol(ConstructorParameters, Decl(lib.es5.d.ts, --, --))
532+
>args : Symbol(args, Decl(genericRestParameters1.ts, 131, 41))
533+
534+
type T07<T extends any[]> = Parameters<(...args: T) => void>;
535+
>T07 : Symbol(T07, Decl(genericRestParameters1.ts, 131, 63))
534536
>T : Symbol(T, Decl(genericRestParameters1.ts, 132, 9))
535-
>Parameters : Symbol(Parameters, Decl(genericRestParameters1.ts, 124, 45))
536-
>args : Symbol(args, Decl(genericRestParameters1.ts, 132, 26))
537+
>Parameters : Symbol(Parameters, Decl(lib.es5.d.ts, --, --))
538+
>args : Symbol(args, Decl(genericRestParameters1.ts, 132, 40))
537539
>T : Symbol(T, Decl(genericRestParameters1.ts, 132, 9))
538540

539-
type T06<T> = Parameters<new (...args: []) => void>;
540-
>T06 : Symbol(T06, Decl(genericRestParameters1.ts, 132, 49))
541+
type T08<T extends any[]> = ConstructorParameters<new (...args: T) => void>;
542+
>T08 : Symbol(T08, Decl(genericRestParameters1.ts, 132, 61))
543+
>T : Symbol(T, Decl(genericRestParameters1.ts, 133, 9))
544+
>ConstructorParameters : Symbol(ConstructorParameters, Decl(lib.es5.d.ts, --, --))
545+
>args : Symbol(args, Decl(genericRestParameters1.ts, 133, 55))
541546
>T : Symbol(T, Decl(genericRestParameters1.ts, 133, 9))
542-
>Parameters : Symbol(Parameters, Decl(genericRestParameters1.ts, 124, 45))
543-
>args : Symbol(args, Decl(genericRestParameters1.ts, 133, 30))
544-
545-
type T07<T extends any[]> = Parameters<(...args: T) => void>;
546-
>T07 : Symbol(T07, Decl(genericRestParameters1.ts, 133, 52))
547-
>T : Symbol(T, Decl(genericRestParameters1.ts, 134, 9))
548-
>Parameters : Symbol(Parameters, Decl(genericRestParameters1.ts, 124, 45))
549-
>args : Symbol(args, Decl(genericRestParameters1.ts, 134, 40))
550-
>T : Symbol(T, Decl(genericRestParameters1.ts, 134, 9))
551-
552-
type T08<T extends any[]> = Parameters<new (...args: T) => void>;
553-
>T08 : Symbol(T08, Decl(genericRestParameters1.ts, 134, 61))
554-
>T : Symbol(T, Decl(genericRestParameters1.ts, 135, 9))
555-
>Parameters : Symbol(Parameters, Decl(genericRestParameters1.ts, 124, 45))
556-
>args : Symbol(args, Decl(genericRestParameters1.ts, 135, 44))
557-
>T : Symbol(T, Decl(genericRestParameters1.ts, 135, 9))
558547

559548
type T09 = Parameters<Function>;
560-
>T09 : Symbol(T09, Decl(genericRestParameters1.ts, 135, 65))
561-
>Parameters : Symbol(Parameters, Decl(genericRestParameters1.ts, 124, 45))
549+
>T09 : Symbol(T09, Decl(genericRestParameters1.ts, 133, 76))
550+
>Parameters : Symbol(Parameters, Decl(lib.es5.d.ts, --, --))
562551
>Function : Symbol(Function, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
563552

564553
type Record1 = {
565-
>Record1 : Symbol(Record1, Decl(genericRestParameters1.ts, 136, 32))
554+
>Record1 : Symbol(Record1, Decl(genericRestParameters1.ts, 134, 32))
566555

567556
move: [number, 'left' | 'right'];
568-
>move : Symbol(move, Decl(genericRestParameters1.ts, 138, 16))
557+
>move : Symbol(move, Decl(genericRestParameters1.ts, 136, 16))
569558

570559
jump: [number, 'up' | 'down'];
571-
>jump : Symbol(jump, Decl(genericRestParameters1.ts, 139, 35))
560+
>jump : Symbol(jump, Decl(genericRestParameters1.ts, 137, 35))
572561

573562
stop: string;
574-
>stop : Symbol(stop, Decl(genericRestParameters1.ts, 140, 32))
563+
>stop : Symbol(stop, Decl(genericRestParameters1.ts, 138, 32))
575564

576565
done: [];
577-
>done : Symbol(done, Decl(genericRestParameters1.ts, 141, 15))
566+
>done : Symbol(done, Decl(genericRestParameters1.ts, 139, 15))
578567
}
579568

580569
type EventType<T> = {
581-
>EventType : Symbol(EventType, Decl(genericRestParameters1.ts, 143, 1))
582-
>T : Symbol(T, Decl(genericRestParameters1.ts, 145, 15))
570+
>EventType : Symbol(EventType, Decl(genericRestParameters1.ts, 141, 1))
571+
>T : Symbol(T, Decl(genericRestParameters1.ts, 143, 15))
583572

584573
emit<K extends keyof T = keyof T>(e: K, ...payload: T[K] extends any[] ? T[K] : [T[K]]): void;
585-
>emit : Symbol(emit, Decl(genericRestParameters1.ts, 145, 21))
586-
>K : Symbol(K, Decl(genericRestParameters1.ts, 146, 7))
587-
>T : Symbol(T, Decl(genericRestParameters1.ts, 145, 15))
588-
>T : Symbol(T, Decl(genericRestParameters1.ts, 145, 15))
589-
>e : Symbol(e, Decl(genericRestParameters1.ts, 146, 36))
590-
>K : Symbol(K, Decl(genericRestParameters1.ts, 146, 7))
591-
>payload : Symbol(payload, Decl(genericRestParameters1.ts, 146, 41))
592-
>T : Symbol(T, Decl(genericRestParameters1.ts, 145, 15))
593-
>K : Symbol(K, Decl(genericRestParameters1.ts, 146, 7))
594-
>T : Symbol(T, Decl(genericRestParameters1.ts, 145, 15))
595-
>K : Symbol(K, Decl(genericRestParameters1.ts, 146, 7))
596-
>T : Symbol(T, Decl(genericRestParameters1.ts, 145, 15))
597-
>K : Symbol(K, Decl(genericRestParameters1.ts, 146, 7))
574+
>emit : Symbol(emit, Decl(genericRestParameters1.ts, 143, 21))
575+
>K : Symbol(K, Decl(genericRestParameters1.ts, 144, 7))
576+
>T : Symbol(T, Decl(genericRestParameters1.ts, 143, 15))
577+
>T : Symbol(T, Decl(genericRestParameters1.ts, 143, 15))
578+
>e : Symbol(e, Decl(genericRestParameters1.ts, 144, 36))
579+
>K : Symbol(K, Decl(genericRestParameters1.ts, 144, 7))
580+
>payload : Symbol(payload, Decl(genericRestParameters1.ts, 144, 41))
581+
>T : Symbol(T, Decl(genericRestParameters1.ts, 143, 15))
582+
>K : Symbol(K, Decl(genericRestParameters1.ts, 144, 7))
583+
>T : Symbol(T, Decl(genericRestParameters1.ts, 143, 15))
584+
>K : Symbol(K, Decl(genericRestParameters1.ts, 144, 7))
585+
>T : Symbol(T, Decl(genericRestParameters1.ts, 143, 15))
586+
>K : Symbol(K, Decl(genericRestParameters1.ts, 144, 7))
598587
}
599588

600589
declare var events: EventType<Record1>;
601-
>events : Symbol(events, Decl(genericRestParameters1.ts, 149, 11))
602-
>EventType : Symbol(EventType, Decl(genericRestParameters1.ts, 143, 1))
603-
>Record1 : Symbol(Record1, Decl(genericRestParameters1.ts, 136, 32))
590+
>events : Symbol(events, Decl(genericRestParameters1.ts, 147, 11))
591+
>EventType : Symbol(EventType, Decl(genericRestParameters1.ts, 141, 1))
592+
>Record1 : Symbol(Record1, Decl(genericRestParameters1.ts, 134, 32))
604593

605594
events.emit('move', 10, 'left');
606-
>events.emit : Symbol(emit, Decl(genericRestParameters1.ts, 145, 21))
607-
>events : Symbol(events, Decl(genericRestParameters1.ts, 149, 11))
608-
>emit : Symbol(emit, Decl(genericRestParameters1.ts, 145, 21))
595+
>events.emit : Symbol(emit, Decl(genericRestParameters1.ts, 143, 21))
596+
>events : Symbol(events, Decl(genericRestParameters1.ts, 147, 11))
597+
>emit : Symbol(emit, Decl(genericRestParameters1.ts, 143, 21))
609598

610599
events.emit('jump', 20, 'up');
611-
>events.emit : Symbol(emit, Decl(genericRestParameters1.ts, 145, 21))
612-
>events : Symbol(events, Decl(genericRestParameters1.ts, 149, 11))
613-
>emit : Symbol(emit, Decl(genericRestParameters1.ts, 145, 21))
600+
>events.emit : Symbol(emit, Decl(genericRestParameters1.ts, 143, 21))
601+
>events : Symbol(events, Decl(genericRestParameters1.ts, 147, 11))
602+
>emit : Symbol(emit, Decl(genericRestParameters1.ts, 143, 21))
614603

615604
events.emit('stop', 'Bye!');
616-
>events.emit : Symbol(emit, Decl(genericRestParameters1.ts, 145, 21))
617-
>events : Symbol(events, Decl(genericRestParameters1.ts, 149, 11))
618-
>emit : Symbol(emit, Decl(genericRestParameters1.ts, 145, 21))
605+
>events.emit : Symbol(emit, Decl(genericRestParameters1.ts, 143, 21))
606+
>events : Symbol(events, Decl(genericRestParameters1.ts, 147, 11))
607+
>emit : Symbol(emit, Decl(genericRestParameters1.ts, 143, 21))
619608

620609
events.emit('done');
621-
>events.emit : Symbol(emit, Decl(genericRestParameters1.ts, 145, 21))
622-
>events : Symbol(events, Decl(genericRestParameters1.ts, 149, 11))
623-
>emit : Symbol(emit, Decl(genericRestParameters1.ts, 145, 21))
610+
>events.emit : Symbol(emit, Decl(genericRestParameters1.ts, 143, 21))
611+
>events : Symbol(events, Decl(genericRestParameters1.ts, 147, 11))
612+
>emit : Symbol(emit, Decl(genericRestParameters1.ts, 143, 21))
624613

625614
// Repro from #25871
626615

627616
declare var ff1: (... args: any[]) => void;
628-
>ff1 : Symbol(ff1, Decl(genericRestParameters1.ts, 157, 11))
629-
>args : Symbol(args, Decl(genericRestParameters1.ts, 157, 18))
617+
>ff1 : Symbol(ff1, Decl(genericRestParameters1.ts, 155, 11))
618+
>args : Symbol(args, Decl(genericRestParameters1.ts, 155, 18))
630619

631620
declare var ff2: () => void;
632-
>ff2 : Symbol(ff2, Decl(genericRestParameters1.ts, 159, 11))
621+
>ff2 : Symbol(ff2, Decl(genericRestParameters1.ts, 157, 11))
633622

634623
declare var ff3: (...args: []) => void;
635-
>ff3 : Symbol(ff3, Decl(genericRestParameters1.ts, 160, 11))
636-
>args : Symbol(args, Decl(genericRestParameters1.ts, 160, 18))
624+
>ff3 : Symbol(ff3, Decl(genericRestParameters1.ts, 158, 11))
625+
>args : Symbol(args, Decl(genericRestParameters1.ts, 158, 18))
637626

638627
declare var ff4: (a: never) => void;
639-
>ff4 : Symbol(ff4, Decl(genericRestParameters1.ts, 161, 11))
640-
>a : Symbol(a, Decl(genericRestParameters1.ts, 161, 18))
628+
>ff4 : Symbol(ff4, Decl(genericRestParameters1.ts, 159, 11))
629+
>a : Symbol(a, Decl(genericRestParameters1.ts, 159, 18))
641630

642631
ff1 = ff2;
643-
>ff1 : Symbol(ff1, Decl(genericRestParameters1.ts, 157, 11))
644-
>ff2 : Symbol(ff2, Decl(genericRestParameters1.ts, 159, 11))
632+
>ff1 : Symbol(ff1, Decl(genericRestParameters1.ts, 155, 11))
633+
>ff2 : Symbol(ff2, Decl(genericRestParameters1.ts, 157, 11))
645634

646635
ff1 = ff3;
647-
>ff1 : Symbol(ff1, Decl(genericRestParameters1.ts, 157, 11))
648-
>ff3 : Symbol(ff3, Decl(genericRestParameters1.ts, 160, 11))
636+
>ff1 : Symbol(ff1, Decl(genericRestParameters1.ts, 155, 11))
637+
>ff3 : Symbol(ff3, Decl(genericRestParameters1.ts, 158, 11))
649638

650639
ff1 = ff4; // Error
651-
>ff1 : Symbol(ff1, Decl(genericRestParameters1.ts, 157, 11))
652-
>ff4 : Symbol(ff4, Decl(genericRestParameters1.ts, 161, 11))
640+
>ff1 : Symbol(ff1, Decl(genericRestParameters1.ts, 155, 11))
641+
>ff4 : Symbol(ff4, Decl(genericRestParameters1.ts, 159, 11))
653642

0 commit comments

Comments
 (0)