Fix declaration emitted crash on mapped type with no type (#22213)

This commit is contained in:
Wesley Wigham 2018-02-27 16:12:03 -08:00 committed by GitHub
parent dafa7321c6
commit c1128d6957
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 48 additions and 1 deletions

View File

@ -608,7 +608,12 @@ namespace ts {
"?");
}
write(": ");
emitType(node.type);
if (node.type) {
emitType(node.type);
}
else {
write("any");
}
write(";");
writeLine();
decreaseIndent();

View File

@ -0,0 +1,16 @@
tests/cases/compiler/mappedTypeNoTypeNoCrash.ts(1,51): error TS2304: Cannot find name 'K'.
tests/cases/compiler/mappedTypeNoTypeNoCrash.ts(1,51): error TS4081: Exported type alias 'T0' has or is using private name 'K'.
tests/cases/compiler/mappedTypeNoTypeNoCrash.ts(1,57): error TS2304: Cannot find name 'K'.
tests/cases/compiler/mappedTypeNoTypeNoCrash.ts(1,57): error TS4081: Exported type alias 'T0' has or is using private name 'K'.
==== tests/cases/compiler/mappedTypeNoTypeNoCrash.ts (4 errors) ====
type T0<T> = ({[K in keyof T]}) extends ({[key in K]: T[K]}) ? number : never;
~
!!! error TS2304: Cannot find name 'K'.
~
!!! error TS4081: Exported type alias 'T0' has or is using private name 'K'.
~
!!! error TS2304: Cannot find name 'K'.
~
!!! error TS4081: Exported type alias 'T0' has or is using private name 'K'.

View File

@ -0,0 +1,4 @@
//// [mappedTypeNoTypeNoCrash.ts]
type T0<T> = ({[K in keyof T]}) extends ({[key in K]: T[K]}) ? number : never;
//// [mappedTypeNoTypeNoCrash.js]

View File

@ -0,0 +1,9 @@
=== tests/cases/compiler/mappedTypeNoTypeNoCrash.ts ===
type T0<T> = ({[K in keyof T]}) extends ({[key in K]: T[K]}) ? number : never;
>T0 : Symbol(T0, Decl(mappedTypeNoTypeNoCrash.ts, 0, 0))
>T : Symbol(T, Decl(mappedTypeNoTypeNoCrash.ts, 0, 8))
>K : Symbol(K, Decl(mappedTypeNoTypeNoCrash.ts, 0, 16))
>T : Symbol(T, Decl(mappedTypeNoTypeNoCrash.ts, 0, 8))
>key : Symbol(key, Decl(mappedTypeNoTypeNoCrash.ts, 0, 43))
>T : Symbol(T, Decl(mappedTypeNoTypeNoCrash.ts, 0, 8))

View File

@ -0,0 +1,11 @@
=== tests/cases/compiler/mappedTypeNoTypeNoCrash.ts ===
type T0<T> = ({[K in keyof T]}) extends ({[key in K]: T[K]}) ? number : never;
>T0 : number
>T : T
>K : K
>T : T
>key : key
>K : No type information available!
>T : T
>K : No type information available!

View File

@ -0,0 +1,2 @@
// @declaration: true
type T0<T> = ({[K in keyof T]}) extends ({[key in K]: T[K]}) ? number : never;