Skip to content

Commit

Permalink
Accept new baselines
Browse files Browse the repository at this point in the history
  • Loading branch information
ahejlsberg committed Apr 18, 2019
1 parent 3a89fea commit 4ce0d20
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 73 deletions.
16 changes: 7 additions & 9 deletions tests/baselines/reference/keyofAndIndexedAccess2.errors.txt
Expand Up @@ -188,7 +188,13 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(108,5): error TS23
!!! error TS2322: Type '123' is not assignable to type '"some string"'.
}

<<<<<<< HEAD
// Repro from #30920

type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;

// Repros from #30938

function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(param: T, cb: (element: T['elements'][number]) => void) {
Expand All @@ -198,12 +204,4 @@ tests/cases/conformance/types/keyof/keyofAndIndexedAccess2.ts(108,5): error TS23
function fn2<T extends Array<string>>(param: T, cb: (element: T[number]) => void) {
cb(param[0]);
}
=======
// Repro from #30920

type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
>>>>>>> master

16 changes: 7 additions & 9 deletions tests/baselines/reference/keyofAndIndexedAccess2.js
Expand Up @@ -109,7 +109,13 @@ function get123<K extends keyof Type>(): Type[K] {
return 123; // Error
}

<<<<<<< HEAD
// Repro from #30920

type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;

// Repros from #30938

function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(param: T, cb: (element: T['elements'][number]) => void) {
Expand All @@ -119,14 +125,6 @@ function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(par
function fn2<T extends Array<string>>(param: T, cb: (element: T[number]) => void) {
cb(param[0]);
}
=======
// Repro from #30920

type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
>>>>>>> master


//// [keyofAndIndexedAccess2.js]
Expand Down
76 changes: 37 additions & 39 deletions tests/baselines/reference/keyofAndIndexedAccess2.symbols
Expand Up @@ -388,44 +388,6 @@ function get123<K extends keyof Type>(): Type[K] {
return 123; // Error
}

<<<<<<< HEAD
// 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))
}
=======
// Repro from #30920

type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
Expand Down Expand Up @@ -471,5 +433,41 @@ type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 115, 7))
>Q : Symbol(Q, Decl(keyofAndIndexedAccess2.ts, 115, 20))
>V : Symbol(V, Decl(keyofAndIndexedAccess2.ts, 115, 9))
>>>>>>> master

// 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, 115, 69))
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 119, 12))
>elements : Symbol(elements, Decl(keyofAndIndexedAccess2.ts, 119, 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, 119, 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, 119, 77))
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 119, 12))
>cb : Symbol(cb, Decl(keyofAndIndexedAccess2.ts, 119, 86))
>element : Symbol(element, Decl(keyofAndIndexedAccess2.ts, 119, 92))
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 119, 12))

cb(param.elements[0]);
>cb : Symbol(cb, Decl(keyofAndIndexedAccess2.ts, 119, 86))
>param.elements : Symbol(elements, Decl(keyofAndIndexedAccess2.ts, 119, 23), Decl(keyofAndIndexedAccess2.ts, 119, 51))
>param : Symbol(param, Decl(keyofAndIndexedAccess2.ts, 119, 77))
>elements : Symbol(elements, Decl(keyofAndIndexedAccess2.ts, 119, 23), Decl(keyofAndIndexedAccess2.ts, 119, 51))
}

function fn2<T extends Array<string>>(param: T, cb: (element: T[number]) => void) {
>fn2 : Symbol(fn2, Decl(keyofAndIndexedAccess2.ts, 121, 1))
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 123, 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, 123, 38))
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 123, 13))
>cb : Symbol(cb, Decl(keyofAndIndexedAccess2.ts, 123, 47))
>element : Symbol(element, Decl(keyofAndIndexedAccess2.ts, 123, 53))
>T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 123, 13))

cb(param[0]);
>cb : Symbol(cb, Decl(keyofAndIndexedAccess2.ts, 123, 47))
>param : Symbol(param, Decl(keyofAndIndexedAccess2.ts, 123, 38))
}

30 changes: 14 additions & 16 deletions tests/baselines/reference/keyofAndIndexedAccess2.types
Expand Up @@ -423,7 +423,20 @@ function get123<K extends keyof Type>(): Type[K] {
>123 : 123
}

<<<<<<< HEAD
// Repro from #30920

type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
>StrictExtract : StrictExtract<T, U>

type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
>StrictExclude : StrictExclude<T, U>

type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
>A : A<T>

type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
>B : A<{ [Q in keyof T]: StrictExclude<A<{ [Q in keyof T[Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<any>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>

// Repros from #30938

function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(param: T, cb: (element: T['elements'][number]) => void) {
Expand Down Expand Up @@ -457,19 +470,4 @@ function fn2<T extends Array<string>>(param: T, cb: (element: T[number]) => void
>param : T
>0 : 0
}
=======
// Repro from #30920

type StrictExtract<T, U> = T extends U ? U extends T ? T : never : never;
>StrictExtract : StrictExtract<T, U>

type StrictExclude<T, U> = T extends StrictExtract<T, U> ? never : T;
>StrictExclude : StrictExclude<T, U>

type A<T> = { [Q in { [P in keyof T]: P; }[keyof T]]: T[Q]; };
>A : A<T>

type B<T, V> = A<{ [Q in keyof T]: StrictExclude<B<T[Q], V>, {}>; }>;
>B : A<{ [Q in keyof T]: StrictExclude<A<{ [Q in keyof T[Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<{ [Q in keyof T[Q][Q][Q][Q][Q][Q][Q][Q][Q][Q]]: StrictExclude<A<any>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>, {}>; }>
>>>>>>> master

0 comments on commit 4ce0d20

Please sign in to comment.