Skip to content

Commit 56cfd6c

Browse files
authored
Preserve return type nodes which resolve to errors in declaration emit (microsoft#58522)
1 parent 8111503 commit 56cfd6c

File tree

57 files changed

+281
-239
lines changed

Some content is hidden

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

57 files changed

+281
-239
lines changed

src/compiler/checker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8233,7 +8233,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
82338233
function serializeReturnTypeForSignatureWorker(context: NodeBuilderContext, signature: Signature) {
82348234
const typePredicate = getTypePredicateOfSignature(signature);
82358235
const type = getReturnTypeOfSignature(signature);
8236-
if (!isErrorType(type) && context.enclosingDeclaration) {
8236+
if (context.enclosingDeclaration && (!isErrorType(type) || (context.flags & NodeBuilderFlags.AllowUnresolvedNames))) {
82378237
const annotation = signature.declaration && getNonlocalEffectiveReturnTypeAnnotationNode(signature.declaration);
82388238
const enclosingDeclarationIgnoringFakeScope = getEnclosingDeclarationIgnoringFakeScope(context.enclosingDeclaration);
82398239
if (!!findAncestor(annotation, n => n === enclosingDeclarationIgnoringFakeScope) && annotation) {

tests/baselines/reference/asyncAwaitIsolatedModules_es2017.types

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

2424
async function f3(): MyPromise<void> { }
2525
>f3 : () => MyPromise<void>
26-
> : ^^^^^^^^^^^^^^^^^^^^^
26+
> : ^^^^^^
2727

2828
let f4 = async function() { }
2929
>f4 : () => Promise<void>
@@ -39,9 +39,9 @@ let f5 = async function(): Promise<void> { }
3939

4040
let f6 = async function(): MyPromise<void> { }
4141
>f6 : () => MyPromise<void>
42-
> : ^^^^^^^^^^^^^^^^^^^^^
42+
> : ^^^^^^
4343
>async function(): MyPromise<void> { } : () => MyPromise<void>
44-
> : ^^^^^^^^^^^^^^^^^^^^^
44+
> : ^^^^^^
4545

4646
let f7 = async () => { };
4747
>f7 : () => Promise<void>
@@ -57,9 +57,9 @@ let f8 = async (): Promise<void> => { };
5757

5858
let f9 = async (): MyPromise<void> => { };
5959
>f9 : () => MyPromise<void>
60-
> : ^^^^^^^^^^^^^^^^^^^^^
60+
> : ^^^^^^
6161
>async (): MyPromise<void> => { } : () => MyPromise<void>
62-
> : ^^^^^^^^^^^^^^^^^^^^^
62+
> : ^^^^^^
6363

6464
let f10 = async () => p;
6565
>f10 : () => Promise<number>
@@ -87,17 +87,17 @@ let f12 = async (): Promise<number> => mp;
8787

8888
let f13 = async (): MyPromise<number> => p;
8989
>f13 : () => MyPromise<number>
90-
> : ^^^^^^^^^^^^^^^^^^^^^^^
90+
> : ^^^^^^
9191
>async (): MyPromise<number> => p : () => MyPromise<number>
92-
> : ^^^^^^^^^^^^^^^^^^^^^^^
92+
> : ^^^^^^
9393
>p : Promise<number>
9494
> : ^^^^^^^^^^^^^^^
9595

9696
let o = {
9797
>o : { m1(): Promise<void>; m2(): Promise<void>; m3(): MyPromise<void>; }
98-
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
98+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^
9999
>{ async m1() { }, async m2(): Promise<void> { }, async m3(): MyPromise<void> { }} : { m1(): Promise<void>; m2(): Promise<void>; m3(): MyPromise<void>; }
100-
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
100+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^
101101

102102
async m1() { },
103103
>m1 : () => Promise<void>
@@ -109,7 +109,7 @@ let o = {
109109

110110
async m3(): MyPromise<void> { }
111111
>m3 : () => MyPromise<void>
112-
> : ^^^^^^^^^^^^^^^^^^^^^
112+
> : ^^^^^^
113113

114114
};
115115

@@ -127,7 +127,7 @@ class C {
127127

128128
async m3(): MyPromise<void> { }
129129
>m3 : () => MyPromise<void>
130-
> : ^^^^^^^^^^^^^^^^^^^^^
130+
> : ^^^^^^
131131

132132
static async m4() { }
133133
>m4 : () => Promise<void>
@@ -139,7 +139,7 @@ class C {
139139

140140
static async m6(): MyPromise<void> { }
141141
>m6 : () => MyPromise<void>
142-
> : ^^^^^^^^^^^^^^^^^^^^^
142+
> : ^^^^^^
143143
}
144144

145145
module M {

tests/baselines/reference/asyncAwaitIsolatedModules_es5.types

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

2424
async function f3(): MyPromise<void> { }
2525
>f3 : () => MyPromise<void>
26-
> : ^^^^^^^^^^^^^^^^^^^^^
26+
> : ^^^^^^
2727

2828
let f4 = async function() { }
2929
>f4 : () => Promise<void>
@@ -39,9 +39,9 @@ let f5 = async function(): Promise<void> { }
3939

4040
let f6 = async function(): MyPromise<void> { }
4141
>f6 : () => MyPromise<void>
42-
> : ^^^^^^^^^^^^^^^^^^^^^
42+
> : ^^^^^^
4343
>async function(): MyPromise<void> { } : () => MyPromise<void>
44-
> : ^^^^^^^^^^^^^^^^^^^^^
44+
> : ^^^^^^
4545

4646
let f7 = async () => { };
4747
>f7 : () => Promise<void>
@@ -57,9 +57,9 @@ let f8 = async (): Promise<void> => { };
5757

5858
let f9 = async (): MyPromise<void> => { };
5959
>f9 : () => MyPromise<void>
60-
> : ^^^^^^^^^^^^^^^^^^^^^
60+
> : ^^^^^^
6161
>async (): MyPromise<void> => { } : () => MyPromise<void>
62-
> : ^^^^^^^^^^^^^^^^^^^^^
62+
> : ^^^^^^
6363

6464
let f10 = async () => p;
6565
>f10 : () => Promise<number>
@@ -87,17 +87,17 @@ let f12 = async (): Promise<number> => mp;
8787

8888
let f13 = async (): MyPromise<number> => p;
8989
>f13 : () => MyPromise<number>
90-
> : ^^^^^^^^^^^^^^^^^^^^^^^
90+
> : ^^^^^^
9191
>async (): MyPromise<number> => p : () => MyPromise<number>
92-
> : ^^^^^^^^^^^^^^^^^^^^^^^
92+
> : ^^^^^^
9393
>p : Promise<number>
9494
> : ^^^^^^^^^^^^^^^
9595

9696
let o = {
9797
>o : { m1(): Promise<void>; m2(): Promise<void>; m3(): MyPromise<void>; }
98-
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
98+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^
9999
>{ async m1() { }, async m2(): Promise<void> { }, async m3(): MyPromise<void> { }} : { m1(): Promise<void>; m2(): Promise<void>; m3(): MyPromise<void>; }
100-
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
100+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^
101101

102102
async m1() { },
103103
>m1 : () => Promise<void>
@@ -109,7 +109,7 @@ let o = {
109109

110110
async m3(): MyPromise<void> { }
111111
>m3 : () => MyPromise<void>
112-
> : ^^^^^^^^^^^^^^^^^^^^^
112+
> : ^^^^^^
113113

114114
};
115115

@@ -127,7 +127,7 @@ class C {
127127

128128
async m3(): MyPromise<void> { }
129129
>m3 : () => MyPromise<void>
130-
> : ^^^^^^^^^^^^^^^^^^^^^
130+
> : ^^^^^^
131131

132132
static async m4() { }
133133
>m4 : () => Promise<void>
@@ -139,7 +139,7 @@ class C {
139139

140140
static async m6(): MyPromise<void> { }
141141
>m6 : () => MyPromise<void>
142-
> : ^^^^^^^^^^^^^^^^^^^^^
142+
> : ^^^^^^
143143
}
144144

145145
module M {

tests/baselines/reference/asyncAwaitIsolatedModules_es6.types

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

2424
async function f3(): MyPromise<void> { }
2525
>f3 : () => MyPromise<void>
26-
> : ^^^^^^^^^^^^^^^^^^^^^
26+
> : ^^^^^^
2727

2828
let f4 = async function() { }
2929
>f4 : () => Promise<void>
@@ -39,9 +39,9 @@ let f5 = async function(): Promise<void> { }
3939

4040
let f6 = async function(): MyPromise<void> { }
4141
>f6 : () => MyPromise<void>
42-
> : ^^^^^^^^^^^^^^^^^^^^^
42+
> : ^^^^^^
4343
>async function(): MyPromise<void> { } : () => MyPromise<void>
44-
> : ^^^^^^^^^^^^^^^^^^^^^
44+
> : ^^^^^^
4545

4646
let f7 = async () => { };
4747
>f7 : () => Promise<void>
@@ -57,9 +57,9 @@ let f8 = async (): Promise<void> => { };
5757

5858
let f9 = async (): MyPromise<void> => { };
5959
>f9 : () => MyPromise<void>
60-
> : ^^^^^^^^^^^^^^^^^^^^^
60+
> : ^^^^^^
6161
>async (): MyPromise<void> => { } : () => MyPromise<void>
62-
> : ^^^^^^^^^^^^^^^^^^^^^
62+
> : ^^^^^^
6363

6464
let f10 = async () => p;
6565
>f10 : () => Promise<number>
@@ -87,17 +87,17 @@ let f12 = async (): Promise<number> => mp;
8787

8888
let f13 = async (): MyPromise<number> => p;
8989
>f13 : () => MyPromise<number>
90-
> : ^^^^^^^^^^^^^^^^^^^^^^^
90+
> : ^^^^^^
9191
>async (): MyPromise<number> => p : () => MyPromise<number>
92-
> : ^^^^^^^^^^^^^^^^^^^^^^^
92+
> : ^^^^^^
9393
>p : Promise<number>
9494
> : ^^^^^^^^^^^^^^^
9595

9696
let o = {
9797
>o : { m1(): Promise<void>; m2(): Promise<void>; m3(): MyPromise<void>; }
98-
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
98+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^
9999
>{ async m1() { }, async m2(): Promise<void> { }, async m3(): MyPromise<void> { }} : { m1(): Promise<void>; m2(): Promise<void>; m3(): MyPromise<void>; }
100-
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
100+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^
101101

102102
async m1() { },
103103
>m1 : () => Promise<void>
@@ -109,7 +109,7 @@ let o = {
109109

110110
async m3(): MyPromise<void> { }
111111
>m3 : () => MyPromise<void>
112-
> : ^^^^^^^^^^^^^^^^^^^^^
112+
> : ^^^^^^
113113

114114
};
115115

@@ -127,7 +127,7 @@ class C {
127127

128128
async m3(): MyPromise<void> { }
129129
>m3 : () => MyPromise<void>
130-
> : ^^^^^^^^^^^^^^^^^^^^^
130+
> : ^^^^^^
131131

132132
static async m4() { }
133133
>m4 : () => Promise<void>
@@ -139,7 +139,7 @@ class C {
139139

140140
static async m6(): MyPromise<void> { }
141141
>m6 : () => MyPromise<void>
142-
> : ^^^^^^^^^^^^^^^^^^^^^
142+
> : ^^^^^^
143143
}
144144

145145
module M {

tests/baselines/reference/badExternalModuleReference.types

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

88
export declare var a: {
99
>a : { (): a1.connectExport; test1: a1.connectModule; }
10-
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^
10+
> : ^^^^^^ ^^^^^^^^^ ^^^
1111

1212
test1: a1.connectModule;
1313
>test1 : a1.connectModule

tests/baselines/reference/bluebirdStaticThis.types

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

148148
static defer<R>(dit: typeof Promise): Promise.Resolver<R>;
149149
>defer : <R>(dit: typeof Promise) => Promise.Resolver<R>
150-
> : ^^^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^
150+
> : ^ ^^ ^^ ^^^^^
151151
>dit : typeof Promise
152152
> : ^^^^^^^^^^^^^^
153153
>Promise : typeof Promise

tests/baselines/reference/constructorWithIncompleteTypeAnnotation.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1290,7 +1290,7 @@ module TypeScriptAllInOne {
12901290
interface IF {
12911291
Foo(): bool;
12921292
>Foo : () => bool
1293-
> : ^^^^^^^^^^
1293+
> : ^^^^^^
12941294
}
12951295

12961296
class CLASS implements IF {
@@ -1323,7 +1323,7 @@ module TypeScriptAllInOne {
13231323
}
13241324
public Foo(): bool {
13251325
>Foo : () => bool
1326-
> : ^^^^^^^^^^
1326+
> : ^^^^^^
13271327

13281328
var myEvent = () => { return 1; };
13291329
>myEvent : () => number

tests/baselines/reference/exportSpecifierAndLocalMemberDeclaration.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ declare module "m2" {
3131

3232
function Z2(): X.I;
3333
>Z2 : () => X.I
34-
> : ^^^^^^^^^
34+
> : ^^^^^^
3535
>X : any
3636
> : ^^^
3737
}

tests/baselines/reference/exportSpecifierReferencingOuterDeclaration3.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ declare module "m" {
1919

2020
export function bar(): X.bar; // error
2121
>bar : () => X.bar
22-
> : ^^^^^^^^^^^
22+
> : ^^^^^^
2323
>X : any
2424
> : ^^^
2525
}

tests/baselines/reference/exportSpecifierReferencingOuterDeclaration4.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export declare function foo(): X.foo;
1818

1919
export declare function bar(): X.bar; // error
2020
>bar : () => X.bar
21-
> : ^^^^^^^^^^^
21+
> : ^^^^^^
2222
>X : any
2323
> : ^^^
2424

0 commit comments

Comments
 (0)