Skip to content

Commit 78a9924

Browse files
authored
Reuse input type nodes when serializing signature parameter and return types (#37444)
* Accept change * Accept the huge set of ever so slightly changed baselines * Update return type logic to only reuse nodes if original nodes share scope with current node, like property types, only reuse nodes if symbols referened are acessible, reuse nodes for property signatures, too * Only reuse nodes when a context is provided (otherwise identifier printback may fail) * Only track symbol if symbol is found and no error is recorded * Fix type parameter reuse lookup * Forbid cjs module.exports references in retained nodes * Adjust check for cjs export references to not include bad module type in output * Add symbol to all identifiers we see in existing nodes for quickinfo * Accept fourslash baseline updates * Accept slightly updated baseline post-merge * Do not copy original nodes for error types, replace empty type references with any
1 parent 5596ed8 commit 78a9924

File tree

636 files changed

+2621
-2467
lines changed

Some content is hidden

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

636 files changed

+2621
-2467
lines changed

src/compiler/checker.ts

Lines changed: 212 additions & 162 deletions
Large diffs are not rendered by default.

src/compiler/utilities.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2114,10 +2114,13 @@ namespace ts {
21142114
return isIdentifier(node) && node.escapedText === "exports";
21152115
}
21162116

2117+
export function isModuleIdentifier(node: Node) {
2118+
return isIdentifier(node) && node.escapedText === "module";
2119+
}
2120+
21172121
export function isModuleExportsAccessExpression(node: Node): node is LiteralLikeElementAccessExpression & { expression: Identifier } {
21182122
return (isPropertyAccessExpression(node) || isLiteralLikeElementAccess(node))
2119-
&& isIdentifier(node.expression)
2120-
&& node.expression.escapedText === "module"
2123+
&& isModuleIdentifier(node.expression)
21212124
&& getElementOrPropertyAccessName(node) === "exports";
21222125
}
21232126

tests/baselines/reference/1.0lib-noErrors.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1884,7 +1884,7 @@ interface Array<T> {
18841884
>n : number
18851885
}
18861886
declare var Array: {
1887-
>Array : { (arrayLength?: number): any[]; <T>(arrayLength: number): T[]; <T>(...items: T[]): T[]; new (arrayLength?: number): any[]; new <T>(arrayLength: number): T[]; new <T>(...items: T[]): T[]; isArray(arg: any): boolean; prototype: any[]; }
1887+
>Array : { (arrayLength?: number): any[]; <T>(arrayLength: number): T[]; <T>(...items: T[]): T[]; new (arrayLength?: number): any[]; new <T>(arrayLength: number): T[]; new <T>(...items: T[]): T[]; isArray(arg: any): boolean; prototype: Array<any>; }
18881888

18891889
new (arrayLength?: number): any[];
18901890
>arrayLength : number

tests/baselines/reference/ExportObjectLiteralAndObjectTypeLiteralWithAccessibleTypesInNestedMemberTypeAnnotations.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ module A {
1111
}
1212

1313
export var UnitSquare : {
14-
>UnitSquare : { top: { left: Point; right: Point; }; bottom: { left: Point; right: Point; }; }
14+
>UnitSquare : { top: { left: Point; right: Point;}; bottom: { left: Point; right: Point;}; }
1515

1616
top: { left: Point, right: Point },
1717
>top : { left: Point; right: Point; }

tests/baselines/reference/FunctionAndModuleWithSameNameAndCommonRoot.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ module A {
3333

3434
=== tests/cases/conformance/internalModules/DeclarationMerging/test.ts ===
3535
var fn: () => { x: number; y: number };
36-
>fn : () => { x: number; y: number; }
36+
>fn : () => { x: number; y: number;}
3737
>x : number
3838
>y : number
3939

tests/baselines/reference/FunctionAndModuleWithSameNameAndDifferentCommonRoot.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ module B {
3333

3434
=== tests/cases/conformance/internalModules/DeclarationMerging/test.ts ===
3535
var fn: () => { x: number; y: number };
36-
>fn : () => { x: number; y: number; }
36+
>fn : () => { x: number; y: number;}
3737
>x : number
3838
>y : number
3939

tests/baselines/reference/ModuleWithExportedAndNonExportedImportAlias.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ var p = Geometry.Origin;
8282
>Origin : A.Point
8383

8484
var line: { start: { x: number; y: number }; end: { x: number; y: number; } };
85-
>line : { start: { x: number; y: number; }; end: { x: number; y: number; }; }
85+
>line : { start: { x: number; y: number;}; end: { x: number; y: number;}; }
8686
>start : { x: number; y: number; }
8787
>x : number
8888
>y : number

tests/baselines/reference/TypeGuardWithEnumUnion.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ enum Color { R, G, B }
66
>B : Color.B
77

88
function f1(x: Color | string) {
9-
>f1 : (x: string | Color) => void
9+
>f1 : (x: Color | string) => void
1010
>x : string | Color
1111

1212
if (typeof x === "number") {
@@ -33,7 +33,7 @@ function f1(x: Color | string) {
3333
}
3434

3535
function f2(x: Color | string | string[]) {
36-
>f2 : (x: string | Color | string[]) => void
36+
>f2 : (x: Color | string | string[]) => void
3737
>x : string | Color | string[]
3838

3939
if (typeof x === "object") {

tests/baselines/reference/aliasUsageInObjectLiteral.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ var b: { x: IHasVisualizationModel } = { x: moduleA };
2828
>moduleA : typeof moduleA
2929

3030
var c: { y: { z: IHasVisualizationModel } } = { y: { z: moduleA } };
31-
>c : { y: { z: IHasVisualizationModel; }; }
31+
>c : { y: { z: IHasVisualizationModel;}; }
3232
>y : { z: IHasVisualizationModel; }
3333
>z : IHasVisualizationModel
3434
>{ y: { z: moduleA } } : { y: { z: typeof moduleA; }; }

tests/baselines/reference/ambientErrors.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ declare function fn(x: number): string;
1010
>x : number
1111

1212
declare function fn(x: 'foo'): number;
13-
>fn : { (x: number): string; (x: "foo"): number; }
13+
>fn : { (x: number): string; (x: 'foo'): number; }
1414
>x : "foo"
1515

1616
// Ambient functions with duplicate signatures

0 commit comments

Comments
 (0)