Accept new baselines

This commit is contained in:
Anders Hejlsberg
2018-04-29 07:55:28 -07:00
parent 936444ad7b
commit f46040bdab
3 changed files with 810 additions and 497 deletions

View File

@@ -319,6 +319,20 @@ function f90<T extends S2, K extends keyof S2>(x1: S2[keyof S2], x2: T[keyof S2]
x4.length;
}
function f91<T, K extends keyof T>(x: T, y: T[keyof T], z: T[K]) {
let a: {};
a = x;
a = y;
a = z;
}
function f92<T, K extends keyof T>(x: T, y: T[keyof T], z: T[K]) {
let a: {} | null | undefined;
a = x;
a = y;
a = z;
}
// Repros from #12011
class Base {
@@ -592,6 +606,27 @@ type DynamicDBRecord<Flag extends string> = ({ dynamicField: number } | { dynami
function getFlagsFromDynamicRecord<Flag extends string>(record: DynamicDBRecord<Flag>, flags: Flag[]) {
return record[flags[0]];
}
// Repro from #21368
interface I {
foo: string;
}
declare function take<T>(p: T): void;
function fn<T extends I, K extends keyof T>(o: T, k: K) {
take<{} | null | undefined>(o[k]);
take<any>(o[k]);
}
// Repro from #23133
class Unbounded<T> {
foo(x: T[keyof T]) {
let y: {} | undefined | null = x;
}
}
//// [keyofAndIndexedAccess.js]
@@ -830,6 +865,18 @@ function f90(x1, x2, x3, x4) {
x3.length;
x4.length;
}
function f91(x, y, z) {
var a;
a = x;
a = y;
a = z;
}
function f92(x, y, z) {
var a;
a = x;
a = y;
a = z;
}
// Repros from #12011
var Base = /** @class */ (function () {
function Base() {
@@ -986,6 +1033,19 @@ function getFlagsFromSimpleRecord(record, flags) {
function getFlagsFromDynamicRecord(record, flags) {
return record[flags[0]];
}
function fn(o, k) {
take(o[k]);
take(o[k]);
}
// Repro from #23133
var Unbounded = /** @class */ (function () {
function Unbounded() {
}
Unbounded.prototype.foo = function (x) {
var y = x;
};
return Unbounded;
}());
//// [keyofAndIndexedAccess.d.ts]
@@ -1126,6 +1186,8 @@ declare type S2 = {
b: string;
};
declare function f90<T extends S2, K extends keyof S2>(x1: S2[keyof S2], x2: T[keyof S2], x3: S2[K], x4: T[K]): void;
declare function f91<T, K extends keyof T>(x: T, y: T[keyof T], z: T[K]): void;
declare function f92<T, K extends keyof T>(x: T, y: T[keyof T], z: T[K]): void;
declare class Base {
get<K extends keyof this>(prop: K): this[K];
set<K extends keyof this>(prop: K, value: this[K]): void;
@@ -1298,3 +1360,11 @@ declare type DynamicDBRecord<Flag extends string> = ({
dynamicField: string;
}) & DBBoolTable<Flag>;
declare function getFlagsFromDynamicRecord<Flag extends string>(record: DynamicDBRecord<Flag>, flags: Flag[]): DynamicDBRecord<Flag>[Flag];
interface I {
foo: string;
}
declare function take<T>(p: T): void;
declare function fn<T extends I, K extends keyof T>(o: T, k: K): void;
declare class Unbounded<T> {
foo(x: T[keyof T]): void;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1497,6 +1497,73 @@ function f90<T extends S2, K extends keyof S2>(x1: S2[keyof S2], x2: T[keyof S2]
>length : number
}
function f91<T, K extends keyof T>(x: T, y: T[keyof T], z: T[K]) {
>f91 : <T, K extends keyof T>(x: T, y: T[keyof T], z: T[K]) => void
>T : T
>K : K
>T : T
>x : T
>T : T
>y : T[keyof T]
>T : T
>T : T
>z : T[K]
>T : T
>K : K
let a: {};
>a : {}
a = x;
>a = x : T
>a : {}
>x : T
a = y;
>a = y : T[keyof T]
>a : {}
>y : T[keyof T]
a = z;
>a = z : T[K]
>a : {}
>z : T[K]
}
function f92<T, K extends keyof T>(x: T, y: T[keyof T], z: T[K]) {
>f92 : <T, K extends keyof T>(x: T, y: T[keyof T], z: T[K]) => void
>T : T
>K : K
>T : T
>x : T
>T : T
>y : T[keyof T]
>T : T
>T : T
>z : T[K]
>T : T
>K : K
let a: {} | null | undefined;
>a : {} | null | undefined
>null : null
a = x;
>a = x : T
>a : {} | null | undefined
>x : T
a = y;
>a = y : T[keyof T]
>a : {} | null | undefined
>y : T[keyof T]
a = z;
>a = z : T[K]
>a : {} | null | undefined
>z : T[K]
}
// Repros from #12011
class Base {
@@ -2463,3 +2530,64 @@ function getFlagsFromDynamicRecord<Flag extends string>(record: DynamicDBRecord<
>0 : 0
}
// Repro from #21368
interface I {
>I : I
foo: string;
>foo : string
}
declare function take<T>(p: T): void;
>take : <T>(p: T) => void
>T : T
>p : T
>T : T
function fn<T extends I, K extends keyof T>(o: T, k: K) {
>fn : <T extends I, K extends keyof T>(o: T, k: K) => void
>T : T
>I : I
>K : K
>T : T
>o : T
>T : T
>k : K
>K : K
take<{} | null | undefined>(o[k]);
>take<{} | null | undefined>(o[k]) : void
>take : <T>(p: T) => void
>null : null
>o[k] : T[K]
>o : T
>k : K
take<any>(o[k]);
>take<any>(o[k]) : void
>take : <T>(p: T) => void
>o[k] : T[K]
>o : T
>k : K
}
// Repro from #23133
class Unbounded<T> {
>Unbounded : Unbounded<T>
>T : T
foo(x: T[keyof T]) {
>foo : (x: T[keyof T]) => void
>x : T[keyof T]
>T : T
>T : T
let y: {} | undefined | null = x;
>y : {} | null | undefined
>null : null
>x : T[keyof T]
}
}