Skip to content

Commit 66047f7

Browse files
authored
Look for usable type nodes in associated expressions for declaration emit (#57772)
1 parent ac2e122 commit 66047f7

File tree

191 files changed

+1314
-417
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

191 files changed

+1314
-417
lines changed

src/compiler/checker.ts

+160-39
Large diffs are not rendered by default.

src/compiler/utilities.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6517,7 +6517,7 @@ export function identifierIsThisKeyword(id: Identifier): boolean {
65176517
}
65186518

65196519
/** @internal */
6520-
export function getAllAccessorDeclarations(declarations: readonly Declaration[], accessor: AccessorDeclaration): AllAccessorDeclarations {
6520+
export function getAllAccessorDeclarations(declarations: readonly Declaration[] | undefined, accessor: AccessorDeclaration): AllAccessorDeclarations {
65216521
// TODO: GH#18217
65226522
let firstAccessor!: AccessorDeclaration;
65236523
let secondAccessor!: AccessorDeclaration;

tests/baselines/reference/annotatedThisPropertyInitializerDoesntNarrow.types

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
// from webpack/lib/Compilation.js and filed at #26427
55
/** @param {{ [s: string]: number }} map */
66
function mappy(map) {}
7-
>mappy : (map: { [s: string]: number; }) => void
7+
>mappy : (map: { [s: string]: number;}) => void
88
>map : { [s: string]: number; }
99

1010
export class C {

tests/baselines/reference/anonterface.types

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module M {
88
>C : C
99

1010
m(fn:{ (n:number):string; },n2:number):string {
11-
>m : (fn: (n: number) => string, n2: number) => string
11+
>m : (fn: { (n: number): string;}, n2: number) => string
1212
>fn : (n: number) => string
1313
>n : number
1414
>n2 : number

tests/baselines/reference/arrayLiteralContextualType.types

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ function foo(animals: IAnimal[]) { }
3535
>animals : IAnimal[]
3636

3737
function bar(animals: { [n: number]: IAnimal }) { }
38-
>bar : (animals: { [n: number]: IAnimal; }) => void
38+
>bar : (animals: { [n: number]: IAnimal;}) => void
3939
>animals : { [n: number]: IAnimal; }
4040
>n : number
4141

tests/baselines/reference/assignmentCompatWithCallSignatures3.types

+1-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ var a17: {
130130

131131
};
132132
var a18: {
133-
>a18 : { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }
133+
>a18 : { (x: { (a: number): number; (a: string): string;}): any[]; (x: { (a: boolean): boolean; (a: Date): Date;}): any[]; }
134134

135135
(x: {
136136
>x : { (a: number): number; (a: string): string; }

tests/baselines/reference/assignmentCompatWithCallSignatures4.types

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ module Errors {
8181
>b : number
8282

8383
var a16: {
84-
>a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; }
84+
>a16 : { (x: { (a: number): number; (a?: number): number;}): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean;}): boolean[]; }
8585

8686
(x: {
8787
>x : { (a: number): number; (a?: number): number; }

tests/baselines/reference/assignmentCompatWithConstructSignatures3.types

+1-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ var a17: {
130130

131131
};
132132
var a18: {
133-
>a18 : { new (x: { new (a: number): number; new (a: string): string; }): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date; }): any[]; }
133+
>a18 : { new (x: { new (a: number): number; new (a: string): string;}): any[]; new (x: { new (a: boolean): boolean; new (a: Date): Date;}): any[]; }
134134

135135
new (x: {
136136
>x : { new (a: number): number; new (a: string): string; }

tests/baselines/reference/assignmentCompatWithConstructSignatures4.types

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ module Errors {
8181
>b : number
8282

8383
var a16: {
84-
>a16 : { new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }
84+
>a16 : { new (x: { new (a: number): number; new (a?: number): number;}): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean;}): boolean[]; }
8585

8686
new (x: {
8787
>x : { new (a: number): number; new (a?: number): number; }

tests/baselines/reference/asyncFunctionContextuallyTypedReturns.types

+2-2
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ h(async v => v ? (def) => { } : Promise.reject());
104104

105105
// repro from #29196
106106
const increment: (
107-
>increment : (num: number, str: string) => string | Promise<string | ((s: string) => any)>
107+
>increment : (num: number, str: string) => Promise<((s: string) => any) | string> | string
108108

109109
num: number,
110110
>num : number
@@ -130,7 +130,7 @@ const increment: (
130130
}
131131

132132
const increment2: (
133-
>increment2 : (num: number, str: string) => Promise<string | ((s: string) => any)>
133+
>increment2 : (num: number, str: string) => Promise<((s: string) => any) | string>
134134

135135
num: number,
136136
>num : number

tests/baselines/reference/asyncFunctionsAndStrictNullChecks.types

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
declare namespace Windows.Foundation {
55
interface IPromise<TResult> {
66
then<U>(success?: (value: TResult) => IPromise<U>, error?: (error: any) => IPromise<U>, progress?: (progress: any) => void): IPromise<U>;
7-
>then : { <U>(success?: ((value: TResult) => IPromise<U>) | undefined, error?: ((error: any) => IPromise<U>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U>; <U_1>(success?: ((value: TResult) => IPromise<U_1>) | undefined, error?: ((error: any) => U_1) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_1>; <U_2>(success?: ((value: TResult) => U_2) | undefined, error?: ((error: any) => IPromise<U_2>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_2>; <U_3>(success?: ((value: TResult) => U_3) | undefined, error?: ((error: any) => U_3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_3>; }
7+
>then : { <U>(success?: (value: TResult) => IPromise<U>, error?: (error: any) => IPromise<U>, progress?: (progress: any) => void): IPromise<U>; <U_1>(success?: ((value: TResult) => IPromise<U_1>) | undefined, error?: ((error: any) => U_1) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_1>; <U_2>(success?: ((value: TResult) => U_2) | undefined, error?: ((error: any) => IPromise<U_2>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_2>; <U_3>(success?: ((value: TResult) => U_3) | undefined, error?: ((error: any) => U_3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_3>; }
88
>success : ((value: TResult) => IPromise<U>) | undefined
99
>value : TResult
1010
>error : ((error: any) => IPromise<U>) | undefined
@@ -13,7 +13,7 @@ declare namespace Windows.Foundation {
1313
>progress : any
1414

1515
then<U>(success?: (value: TResult) => IPromise<U>, error?: (error: any) => U, progress?: (progress: any) => void): IPromise<U>;
16-
>then : { <U_1>(success?: ((value: TResult) => IPromise<U_1>) | undefined, error?: ((error: any) => IPromise<U_1>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_1>; <U>(success?: ((value: TResult) => IPromise<U>) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U>; <U_2>(success?: ((value: TResult) => U_2) | undefined, error?: ((error: any) => IPromise<U_2>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_2>; <U_3>(success?: ((value: TResult) => U_3) | undefined, error?: ((error: any) => U_3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_3>; }
16+
>then : { <U_1>(success?: ((value: TResult) => IPromise<U_1>) | undefined, error?: ((error: any) => IPromise<U_1>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_1>; <U>(success?: (value: TResult) => IPromise<U>, error?: (error: any) => U, progress?: (progress: any) => void): IPromise<U>; <U_2>(success?: ((value: TResult) => U_2) | undefined, error?: ((error: any) => IPromise<U_2>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_2>; <U_3>(success?: ((value: TResult) => U_3) | undefined, error?: ((error: any) => U_3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_3>; }
1717
>success : ((value: TResult) => IPromise<U>) | undefined
1818
>value : TResult
1919
>error : ((error: any) => U) | undefined
@@ -22,7 +22,7 @@ declare namespace Windows.Foundation {
2222
>progress : any
2323

2424
then<U>(success?: (value: TResult) => U, error?: (error: any) => IPromise<U>, progress?: (progress: any) => void): IPromise<U>;
25-
>then : { <U_1>(success?: ((value: TResult) => IPromise<U_1>) | undefined, error?: ((error: any) => IPromise<U_1>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_1>; <U_2>(success?: ((value: TResult) => IPromise<U_2>) | undefined, error?: ((error: any) => U_2) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_2>; <U>(success?: ((value: TResult) => U) | undefined, error?: ((error: any) => IPromise<U>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U>; <U_3>(success?: ((value: TResult) => U_3) | undefined, error?: ((error: any) => U_3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_3>; }
25+
>then : { <U_1>(success?: ((value: TResult) => IPromise<U_1>) | undefined, error?: ((error: any) => IPromise<U_1>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_1>; <U_2>(success?: ((value: TResult) => IPromise<U_2>) | undefined, error?: ((error: any) => U_2) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_2>; <U>(success?: (value: TResult) => U, error?: (error: any) => IPromise<U>, progress?: (progress: any) => void): IPromise<U>; <U_3>(success?: ((value: TResult) => U_3) | undefined, error?: ((error: any) => U_3) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_3>; }
2626
>success : ((value: TResult) => U) | undefined
2727
>value : TResult
2828
>error : ((error: any) => IPromise<U>) | undefined
@@ -31,7 +31,7 @@ declare namespace Windows.Foundation {
3131
>progress : any
3232

3333
then<U>(success?: (value: TResult) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise<U>;
34-
>then : { <U_1>(success?: ((value: TResult) => IPromise<U_1>) | undefined, error?: ((error: any) => IPromise<U_1>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_1>; <U_2>(success?: ((value: TResult) => IPromise<U_2>) | undefined, error?: ((error: any) => U_2) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_2>; <U_3>(success?: ((value: TResult) => U_3) | undefined, error?: ((error: any) => IPromise<U_3>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_3>; <U>(success?: ((value: TResult) => U) | undefined, error?: ((error: any) => U) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U>; }
34+
>then : { <U_1>(success?: ((value: TResult) => IPromise<U_1>) | undefined, error?: ((error: any) => IPromise<U_1>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_1>; <U_2>(success?: ((value: TResult) => IPromise<U_2>) | undefined, error?: ((error: any) => U_2) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_2>; <U_3>(success?: ((value: TResult) => U_3) | undefined, error?: ((error: any) => IPromise<U_3>) | undefined, progress?: ((progress: any) => void) | undefined): IPromise<U_3>; <U>(success?: (value: TResult) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise<U>; }
3535
>success : ((value: TResult) => U) | undefined
3636
>value : TResult
3737
>error : ((error: any) => U) | undefined
@@ -40,7 +40,7 @@ declare namespace Windows.Foundation {
4040
>progress : any
4141

4242
done<U>(success?: (value: TResult) => any, error?: (error: any) => any, progress?: (progress: any) => void): void;
43-
>done : <U>(success?: ((value: TResult) => any) | undefined, error?: ((error: any) => any) | undefined, progress?: ((progress: any) => void) | undefined) => void
43+
>done : <U>(success?: (value: TResult) => any, error?: (error: any) => any, progress?: (progress: any) => void) => void
4444
>success : ((value: TResult) => any) | undefined
4545
>value : TResult
4646
>error : ((error: any) => any) | undefined

tests/baselines/reference/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ declare const foo: ["a", string, number] | ["b", string, boolean];
55
>foo : ["a", string, number] | ["b", string, boolean]
66

77
export function test(arg: { index?: number }) {
8-
>test : (arg: { index?: number | undefined; }) => void
8+
>test : (arg: { index?: number;}) => void
99
>arg : { index?: number | undefined; }
1010
>index : number | undefined
1111

tests/baselines/reference/awaitedTypeStrictNull.types

+1-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ interface Obj { x: number }
175175
>x : number
176176

177177
async function fn<T>(): Promise<T extends object ? { [K in keyof T]: Obj } : Obj> {
178-
>fn : <T>() => Promise<T extends object ? { [K in keyof T]: Obj; } : Obj>
178+
>fn : <T>() => Promise<T extends object ? { [K in keyof T]: Obj;} : Obj>
179179

180180
// Per #45924, this was failing due to incorrect inference both above and here.
181181
// Should not error.

tests/baselines/reference/callSignatureAssignabilityInInheritance2.types

+1-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ interface A { // T
134134

135135
};
136136
a18: {
137-
>a18 : { (x: { (a: number): number; (a: string): string; }): any[]; (x: { (a: boolean): boolean; (a: Date): Date; }): any[]; }
137+
>a18 : { (x: { (a: number): number; (a: string): string;}): any[]; (x: { (a: boolean): boolean; (a: Date): Date;}): any[]; }
138138

139139
(x: {
140140
>x : { (a: number): number; (a: string): string; }

tests/baselines/reference/callSignatureAssignabilityInInheritance3.types

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ module Errors {
8181
>b : number
8282

8383
a16: {
84-
>a16 : { (x: { (a: number): number; (a?: number): number; }): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean; }): boolean[]; }
84+
>a16 : { (x: { (a: number): number; (a?: number): number;}): number[]; (x: { (a: boolean): boolean; (a?: boolean): boolean;}): boolean[]; }
8585

8686
// type of parameter is overload set which means we can't do inference based on this type
8787
(x: {

tests/baselines/reference/callsOnComplexSignatures.types

+2-2
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@ function test2() {
5353

5454
interface Messages {
5555
readonly foo: (options: { [key: string]: any, b: number }) => string;
56-
>foo : (options: { [key: string]: any; b: number; }) => string
56+
>foo : (options: { [key: string]: any; b: number;}) => string
5757
>options : { [key: string]: any; b: number; }
5858
>key : string
5959
>b : number
6060

6161
readonly bar: (options: { [key: string]: any, a: string }) => string;
62-
>bar : (options: { [key: string]: any; a: string; }) => string
62+
>bar : (options: { [key: string]: any; a: string;}) => string
6363
>options : { [key: string]: any; a: string; }
6464
>key : string
6565
>a : string

tests/baselines/reference/capturedParametersInInitializers1.types

+3-3
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ let a;
3535
>a : any
3636

3737
function foo3(y = { x: <typeof z>a }, z = 1) {
38-
>foo3 : (y?: { x: number; }, z?: number) => void
39-
>y : { x: number; }
40-
>{ x: <typeof z>a } : { x: number; }
38+
>foo3 : (y?: { x: typeof z; }, z?: number) => void
39+
>y : { x: typeof z; }
40+
>{ x: <typeof z>a } : { x: typeof z; }
4141
>x : number
4242
><typeof z>a : number
4343
>z : number

tests/baselines/reference/coAndContraVariantInferences.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ interface Action<TName extends string, TPayload> {
7070
name: TName;
7171
payload: TPayload;
7272
}
73-
declare const actionA: Action<"ACTION_A", string>;
74-
declare const actionB: Action<"ACTION_B", boolean>;
73+
declare const actionA: Action<'ACTION_A', string>;
74+
declare const actionB: Action<'ACTION_B', boolean>;
7575
declare function call<TName extends string, TPayload>(action: Action<TName, TPayload>, fn: (action: Action<TName, TPayload>) => any): void;
7676
declare const printFn: (action: typeof actionA | typeof actionB) => void;

tests/baselines/reference/collisionArgumentsInType.types

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ var v12: (arguments: number, ...restParameters) => void; // no error - no code g
1212
>restParameters : any[]
1313

1414
var v2: {
15-
>v2 : { (arguments: number, ...restParameters: any[]): any; new (arguments: number, ...restParameters: any[]): any; foo(arguments: number, ...restParameters: any[]): any; prop: (arguments: number, ...restParameters: any[]) => void; }
15+
>v2 : { (arguments: number, ...restParameters: any[]): any; new (arguments: number, ...restParameters: any[]): any; foo(arguments: number, ...restParameters: any[]): any; prop: (arguments: number, ...restParameters: any) => void; }
1616

1717
(arguments: number, ...restParameters); // no error - no code gen
1818
>arguments : number
@@ -33,7 +33,7 @@ var v2: {
3333
>restParameters : any[]
3434
}
3535
var v21: {
36-
>v21 : { (i: number, ...arguments: any[]): any; new (i: number, ...arguments: any[]): any; foo(i: number, ...arguments: any[]): any; prop: (i: number, ...arguments: any[]) => void; }
36+
>v21 : { (i: number, ...arguments: any[]): any; new (i: number, ...arguments: any[]): any; foo(i: number, ...arguments: any[]): any; prop: (i: number, ...arguments: any) => void; }
3737

3838
(i: number, ...arguments); // no error - no code gen
3939
>i : number

tests/baselines/reference/collisionRestParameterInType.types

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var v1: (_i: number, ...restParameters) => void; // no error - no code gen
77
>restParameters : any[]
88

99
var v2: {
10-
>v2 : { (_i: number, ...restParameters: any[]): any; new (_i: number, ...restParameters: any[]): any; foo(_i: number, ...restParameters: any[]): any; prop: (_i: number, ...restParameters: any[]) => void; }
10+
>v2 : { (_i: number, ...restParameters: any[]): any; new (_i: number, ...restParameters: any[]): any; foo(_i: number, ...restParameters: any[]): any; prop: (_i: number, ...restParameters: any) => void; }
1111

1212
(_i: number, ...restParameters); // no error - no code gen
1313
>_i : number

0 commit comments

Comments
 (0)