Skip to content

Commit b443296

Browse files
committed
Do not copy original nodes for error types, replace empty type references with any
1 parent d5bb370 commit b443296

File tree

92 files changed

+590
-587
lines changed

Some content is hidden

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

92 files changed

+590
-587
lines changed

src/compiler/checker.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5355,7 +5355,7 @@ namespace ts {
53555355
* so a `unique symbol` is returned when appropriate for the input symbol, rather than `typeof sym`
53565356
*/
53575357
function serializeTypeForDeclaration(context: NodeBuilderContext, type: Type, symbol: Symbol, enclosingDeclaration: Node | undefined, includePrivateSymbol?: (s: Symbol) => void, bundled?: boolean) {
5358-
if (enclosingDeclaration) {
5358+
if (type !== errorType && enclosingDeclaration) {
53595359
const declWithExistingAnnotation = getDeclarationWithTypeAnnotation(symbol, enclosingDeclaration);
53605360
if (declWithExistingAnnotation && !isFunctionLikeDeclaration(declWithExistingAnnotation)) {
53615361
// try to reuse the existing annotation
@@ -5379,7 +5379,7 @@ namespace ts {
53795379
}
53805380

53815381
function serializeReturnTypeForSignature(context: NodeBuilderContext, type: Type, signature: Signature, includePrivateSymbol?: (s: Symbol) => void, bundled?: boolean) {
5382-
if (context.enclosingDeclaration) {
5382+
if (type !== errorType && context.enclosingDeclaration) {
53835383
const annotation = signature.declaration && getEffectiveReturnTypeNode(signature.declaration);
53845384
if (!!findAncestor(annotation, n => n === context.enclosingDeclaration) && annotation && getTypeFromTypeNode(annotation) === type) {
53855385
const result = serializeExistingTypeNode(context, annotation, includePrivateSymbol, bundled);
@@ -5419,6 +5419,9 @@ namespace ts {
54195419
if (isJSDocNonNullableType(node)) {
54205420
return visitNode(node.type, visitExistingNodeTreeSymbols);
54215421
}
5422+
if (isTypeReferenceNode(node) && isIdentifier(node.typeName) && node.typeName.escapedText === "") {
5423+
return setOriginalNode(createKeywordTypeNode(SyntaxKind.AnyKeyword), node);
5424+
}
54225425
if ((isExpressionWithTypeArguments(node) || isTypeReferenceNode(node)) && isJSDocIndexSignature(node)) {
54235426
return createTypeLiteralNode([createIndexSignature(
54245427
/*decorators*/ undefined,
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
=== tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ArrowFunctions/ArrowFunction1.ts ===
22
var v = (a: ) => {
3-
>v : (a: ) => void
4-
>(a: ) => { } : (a: ) => void
3+
>v : (a: any) => void
4+
>(a: ) => { } : (a: any) => void
55
>a : any
66

77
};

tests/baselines/reference/ClassAndModuleThatMergeWithModuleMemberThatUsesClassTypeParameter.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ module clodule1 {
1515
>clodule1 : typeof clodule1
1616

1717
function f(x: T) { }
18-
>f : (x: T) => void
18+
>f : (x: any) => void
1919
>x : any
2020
}
2121

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
=== tests/cases/compiler/ParameterList5.ts ===
22
function A(): (public B) => C {
3-
>A : () => (B: any) => C
3+
>A : () => (B: any) => any
44
>B : any
55
}

tests/baselines/reference/arguments.types

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ function f() {
2323

2424
interface I {
2525
method(args: typeof arguments): void;
26-
>method : (args: typeof arguments) => void
26+
>method : (args: any) => void
2727
>args : any
2828
>arguments : any
2929

3030
fn: (args: typeof arguments) => void;
31-
>fn : (args: typeof arguments) => void
31+
>fn : (args: any) => void
3232
>args : any
3333
>arguments : any
3434

@@ -41,7 +41,7 @@ interface I {
4141
>arguments : any
4242

4343
construct: new (args: typeof arguments) => void;
44-
>construct : new (args: typeof arguments) => void
44+
>construct : new (args: any) => void
4545
>args : any
4646
>arguments : any
4747
}

tests/baselines/reference/arrayReferenceWithoutTypeArgs.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ class X {
33
>X : X
44

55
public f(a: Array) { }
6-
>f : (a: Array) => void
6+
>f : (a: any) => void
77
>a : any
88
}

tests/baselines/reference/asyncAwaitIsolatedModules_es2017.types

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ async function f1(): Promise<void> { }
1515
>f1 : () => Promise<void>
1616

1717
async function f3(): MyPromise<void> { }
18-
>f3 : () => MyPromise<void>
18+
>f3 : () => any
1919

2020
let f4 = async function() { }
2121
>f4 : () => Promise<void>
@@ -26,8 +26,8 @@ let f5 = async function(): Promise<void> { }
2626
>async function(): Promise<void> { } : () => Promise<void>
2727

2828
let f6 = async function(): MyPromise<void> { }
29-
>f6 : () => MyPromise<void>
30-
>async function(): MyPromise<void> { } : () => MyPromise<void>
29+
>f6 : () => any
30+
>async function(): MyPromise<void> { } : () => any
3131

3232
let f7 = async () => { };
3333
>f7 : () => Promise<void>
@@ -38,8 +38,8 @@ let f8 = async (): Promise<void> => { };
3838
>async (): Promise<void> => { } : () => Promise<void>
3939

4040
let f9 = async (): MyPromise<void> => { };
41-
>f9 : () => MyPromise<void>
42-
>async (): MyPromise<void> => { } : () => MyPromise<void>
41+
>f9 : () => any
42+
>async (): MyPromise<void> => { } : () => any
4343

4444
let f10 = async () => p;
4545
>f10 : () => Promise<number>
@@ -57,13 +57,13 @@ let f12 = async (): Promise<number> => mp;
5757
>mp : any
5858

5959
let f13 = async (): MyPromise<number> => p;
60-
>f13 : () => MyPromise<number>
61-
>async (): MyPromise<number> => p : () => MyPromise<number>
60+
>f13 : () => any
61+
>async (): MyPromise<number> => p : () => any
6262
>p : Promise<number>
6363

6464
let o = {
65-
>o : { m1(): Promise<void>; m2(): Promise<void>; m3(): MyPromise<void>; }
66-
>{ async m1() { }, async m2(): Promise<void> { }, async m3(): MyPromise<void> { }} : { m1(): Promise<void>; m2(): Promise<void>; m3(): MyPromise<void>; }
65+
>o : { m1(): Promise<void>; m2(): Promise<void>; m3(): any; }
66+
>{ async m1() { }, async m2(): Promise<void> { }, async m3(): MyPromise<void> { }} : { m1(): Promise<void>; m2(): Promise<void>; m3(): any; }
6767

6868
async m1() { },
6969
>m1 : () => Promise<void>
@@ -72,7 +72,7 @@ let o = {
7272
>m2 : () => Promise<void>
7373

7474
async m3(): MyPromise<void> { }
75-
>m3 : () => MyPromise<void>
75+
>m3 : () => any
7676

7777
};
7878

@@ -86,7 +86,7 @@ class C {
8686
>m2 : () => Promise<void>
8787

8888
async m3(): MyPromise<void> { }
89-
>m3 : () => MyPromise<void>
89+
>m3 : () => any
9090

9191
static async m4() { }
9292
>m4 : () => Promise<void>
@@ -95,7 +95,7 @@ class C {
9595
>m5 : () => Promise<void>
9696

9797
static async m6(): MyPromise<void> { }
98-
>m6 : () => MyPromise<void>
98+
>m6 : () => any
9999
}
100100

101101
module M {

tests/baselines/reference/asyncAwaitIsolatedModules_es5.types

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ async function f1(): Promise<void> { }
1515
>f1 : () => Promise<void>
1616

1717
async function f3(): MyPromise<void> { }
18-
>f3 : () => MyPromise<void>
18+
>f3 : () => any
1919

2020
let f4 = async function() { }
2121
>f4 : () => Promise<void>
@@ -26,8 +26,8 @@ let f5 = async function(): Promise<void> { }
2626
>async function(): Promise<void> { } : () => Promise<void>
2727

2828
let f6 = async function(): MyPromise<void> { }
29-
>f6 : () => MyPromise<void>
30-
>async function(): MyPromise<void> { } : () => MyPromise<void>
29+
>f6 : () => any
30+
>async function(): MyPromise<void> { } : () => any
3131

3232
let f7 = async () => { };
3333
>f7 : () => Promise<void>
@@ -38,8 +38,8 @@ let f8 = async (): Promise<void> => { };
3838
>async (): Promise<void> => { } : () => Promise<void>
3939

4040
let f9 = async (): MyPromise<void> => { };
41-
>f9 : () => MyPromise<void>
42-
>async (): MyPromise<void> => { } : () => MyPromise<void>
41+
>f9 : () => any
42+
>async (): MyPromise<void> => { } : () => any
4343

4444
let f10 = async () => p;
4545
>f10 : () => Promise<number>
@@ -57,13 +57,13 @@ let f12 = async (): Promise<number> => mp;
5757
>mp : any
5858

5959
let f13 = async (): MyPromise<number> => p;
60-
>f13 : () => MyPromise<number>
61-
>async (): MyPromise<number> => p : () => MyPromise<number>
60+
>f13 : () => any
61+
>async (): MyPromise<number> => p : () => any
6262
>p : Promise<number>
6363

6464
let o = {
65-
>o : { m1(): Promise<void>; m2(): Promise<void>; m3(): MyPromise<void>; }
66-
>{ async m1() { }, async m2(): Promise<void> { }, async m3(): MyPromise<void> { }} : { m1(): Promise<void>; m2(): Promise<void>; m3(): MyPromise<void>; }
65+
>o : { m1(): Promise<void>; m2(): Promise<void>; m3(): any; }
66+
>{ async m1() { }, async m2(): Promise<void> { }, async m3(): MyPromise<void> { }} : { m1(): Promise<void>; m2(): Promise<void>; m3(): any; }
6767

6868
async m1() { },
6969
>m1 : () => Promise<void>
@@ -72,7 +72,7 @@ let o = {
7272
>m2 : () => Promise<void>
7373

7474
async m3(): MyPromise<void> { }
75-
>m3 : () => MyPromise<void>
75+
>m3 : () => any
7676

7777
};
7878

@@ -86,7 +86,7 @@ class C {
8686
>m2 : () => Promise<void>
8787

8888
async m3(): MyPromise<void> { }
89-
>m3 : () => MyPromise<void>
89+
>m3 : () => any
9090

9191
static async m4() { }
9292
>m4 : () => Promise<void>
@@ -95,7 +95,7 @@ class C {
9595
>m5 : () => Promise<void>
9696

9797
static async m6(): MyPromise<void> { }
98-
>m6 : () => MyPromise<void>
98+
>m6 : () => any
9999
}
100100

101101
module M {

tests/baselines/reference/asyncAwaitIsolatedModules_es6.types

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ async function f1(): Promise<void> { }
1515
>f1 : () => Promise<void>
1616

1717
async function f3(): MyPromise<void> { }
18-
>f3 : () => MyPromise<void>
18+
>f3 : () => any
1919

2020
let f4 = async function() { }
2121
>f4 : () => Promise<void>
@@ -26,8 +26,8 @@ let f5 = async function(): Promise<void> { }
2626
>async function(): Promise<void> { } : () => Promise<void>
2727

2828
let f6 = async function(): MyPromise<void> { }
29-
>f6 : () => MyPromise<void>
30-
>async function(): MyPromise<void> { } : () => MyPromise<void>
29+
>f6 : () => any
30+
>async function(): MyPromise<void> { } : () => any
3131

3232
let f7 = async () => { };
3333
>f7 : () => Promise<void>
@@ -38,8 +38,8 @@ let f8 = async (): Promise<void> => { };
3838
>async (): Promise<void> => { } : () => Promise<void>
3939

4040
let f9 = async (): MyPromise<void> => { };
41-
>f9 : () => MyPromise<void>
42-
>async (): MyPromise<void> => { } : () => MyPromise<void>
41+
>f9 : () => any
42+
>async (): MyPromise<void> => { } : () => any
4343

4444
let f10 = async () => p;
4545
>f10 : () => Promise<number>
@@ -57,13 +57,13 @@ let f12 = async (): Promise<number> => mp;
5757
>mp : any
5858

5959
let f13 = async (): MyPromise<number> => p;
60-
>f13 : () => MyPromise<number>
61-
>async (): MyPromise<number> => p : () => MyPromise<number>
60+
>f13 : () => any
61+
>async (): MyPromise<number> => p : () => any
6262
>p : Promise<number>
6363

6464
let o = {
65-
>o : { m1(): Promise<void>; m2(): Promise<void>; m3(): MyPromise<void>; }
66-
>{ async m1() { }, async m2(): Promise<void> { }, async m3(): MyPromise<void> { }} : { m1(): Promise<void>; m2(): Promise<void>; m3(): MyPromise<void>; }
65+
>o : { m1(): Promise<void>; m2(): Promise<void>; m3(): any; }
66+
>{ async m1() { }, async m2(): Promise<void> { }, async m3(): MyPromise<void> { }} : { m1(): Promise<void>; m2(): Promise<void>; m3(): any; }
6767

6868
async m1() { },
6969
>m1 : () => Promise<void>
@@ -72,7 +72,7 @@ let o = {
7272
>m2 : () => Promise<void>
7373

7474
async m3(): MyPromise<void> { }
75-
>m3 : () => MyPromise<void>
75+
>m3 : () => any
7676

7777
};
7878

@@ -86,7 +86,7 @@ class C {
8686
>m2 : () => Promise<void>
8787

8888
async m3(): MyPromise<void> { }
89-
>m3 : () => MyPromise<void>
89+
>m3 : () => any
9090

9191
static async m4() { }
9292
>m4 : () => Promise<void>
@@ -95,7 +95,7 @@ class C {
9595
>m5 : () => Promise<void>
9696

9797
static async m6(): MyPromise<void> { }
98-
>m6 : () => MyPromise<void>
98+
>m6 : () => any
9999
}
100100

101101
module M {

tests/baselines/reference/badExternalModuleReference.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import a1 = require("garbage");
33
>a1 : any
44

55
export declare var a: {
6-
>a : { (): a1.connectExport; test1: a1.connectModule; }
6+
>a : { (): any; test1: any; }
77

88
test1: a1.connectModule;
99
>test1 : any

tests/baselines/reference/bluebirdStaticThis.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export declare class Promise<R> implements Promise.Thenable<R> {
8686
>reason : any
8787

8888
static defer<R>(dit: typeof Promise): Promise.Resolver<R>;
89-
>defer : <R>(dit: typeof Promise) => Promise.Resolver<R>
89+
>defer : <R>(dit: typeof Promise) => any
9090
>dit : typeof Promise
9191
>Promise : typeof Promise
9292
>Promise : any

tests/baselines/reference/constructorWithIncompleteTypeAnnotation.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,7 @@ module TypeScriptAllInOne {
797797

798798
interface IF {
799799
Foo(): bool;
800-
>Foo : () => bool
800+
>Foo : () => any
801801
}
802802

803803
class CLASS implements IF {
@@ -820,7 +820,7 @@ module TypeScriptAllInOne {
820820
>0 : 0
821821
}
822822
public Foo(): bool {
823-
>Foo : () => bool
823+
>Foo : () => any
824824

825825
var myEvent = () => { return 1; };
826826
>myEvent : () => number

0 commit comments

Comments
 (0)