Accept new baselines

This commit is contained in:
Anders Hejlsberg
2019-04-17 12:37:10 -07:00
parent 07d259593a
commit f9a55ac55e
4 changed files with 98 additions and 0 deletions
@@ -187,4 +187,14 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(108,5): error TS23
!!! error TS2322: Type '123' is not assignable to type '123 & "some string"'.
!!! error TS2322: Type '123' is not assignable to type '"some string"'.
}
// Repros from #30938
function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(param: T, cb: (element: T['elements'][number]) => void) {
cb(param.elements[0]);
}
function fn2<T extends Array<string>>(param: T, cb: (element: T[number]) => void) {
cb(param[0]);
}
@@ -108,6 +108,16 @@ interface Type {
function get123<K extends keyof Type>(): Type[K] {
return 123; // Error
}
// Repros from #30938
function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(param: T, cb: (element: T['elements'][number]) => void) {
cb(param.elements[0]);
}
function fn2<T extends Array<string>>(param: T, cb: (element: T[number]) => void) {
cb(param[0]);
}
//// [keyofAndIndexedAccess2.js]
@@ -183,3 +193,10 @@ export function getEntity(id, state) {
function get123() {
return 123; // Error
}
// Repros from #30938
function fn(param, cb) {
cb(param.elements[0]);
}
function fn2(param, cb) {
cb(param[0]);
}
@@ -388,3 +388,40 @@ function get123<K extends keyof Type>(): Type[K] {
return 123; // Error
}
// Repros from #30938
function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(param: T, cb: (element: T['elements'][number]) => void) {
>fn : Symbol(fn, Decl(keyofAndIndexedAccess2.ts, 108, 1))
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 12))
>elements : Symbol(elements, Decl(keyofAndIndexedAccess2.ts, 112, 23))
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --) ... and 2 more)
>elements : Symbol(elements, Decl(keyofAndIndexedAccess2.ts, 112, 51))
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --) ... and 2 more)
>param : Symbol(param, Decl(keyofAndIndexedAccess2.ts, 112, 77))
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 12))
>cb : Symbol(cb, Decl(keyofAndIndexedAccess2.ts, 112, 86))
>element : Symbol(element, Decl(keyofAndIndexedAccess2.ts, 112, 92))
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 12))
cb(param.elements[0]);
>cb : Symbol(cb, Decl(keyofAndIndexedAccess2.ts, 112, 86))
>param.elements : Symbol(elements, Decl(keyofAndIndexedAccess2.ts, 112, 23), Decl(keyofAndIndexedAccess2.ts, 112, 51))
>param : Symbol(param, Decl(keyofAndIndexedAccess2.ts, 112, 77))
>elements : Symbol(elements, Decl(keyofAndIndexedAccess2.ts, 112, 23), Decl(keyofAndIndexedAccess2.ts, 112, 51))
}
function fn2<T extends Array<string>>(param: T, cb: (element: T[number]) => void) {
>fn2 : Symbol(fn2, Decl(keyofAndIndexedAccess2.ts, 114, 1))
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 116, 13))
>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --) ... and 2 more)
>param : Symbol(param, Decl(keyofAndIndexedAccess2.ts, 116, 38))
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 116, 13))
>cb : Symbol(cb, Decl(keyofAndIndexedAccess2.ts, 116, 47))
>element : Symbol(element, Decl(keyofAndIndexedAccess2.ts, 116, 53))
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 116, 13))
cb(param[0]);
>cb : Symbol(cb, Decl(keyofAndIndexedAccess2.ts, 116, 47))
>param : Symbol(param, Decl(keyofAndIndexedAccess2.ts, 116, 38))
}
@@ -423,3 +423,37 @@ function get123<K extends keyof Type>(): Type[K] {
>123 : 123
}
// Repros from #30938
function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(param: T, cb: (element: T['elements'][number]) => void) {
>fn : <T extends { elements: string[]; } | { elements: number[]; }>(param: T, cb: (element: T["elements"][number]) => void) => void
>elements : string[]
>elements : number[]
>param : T
>cb : (element: T["elements"][number]) => void
>element : T["elements"][number]
cb(param.elements[0]);
>cb(param.elements[0]) : void
>cb : (element: T["elements"][number]) => void
>param.elements[0] : string | number
>param.elements : string[] | number[]
>param : T
>elements : string[] | number[]
>0 : 0
}
function fn2<T extends Array<string>>(param: T, cb: (element: T[number]) => void) {
>fn2 : <T extends string[]>(param: T, cb: (element: T[number]) => void) => void
>param : T
>cb : (element: T[number]) => void
>element : T[number]
cb(param[0]);
>cb(param[0]) : void
>cb : (element: T[number]) => void
>param[0] : string
>param : T
>0 : 0
}