Accept new baselines

This commit is contained in:
Anders Hejlsberg 2019-09-04 16:50:06 -07:00
parent 228b727ff1
commit 7b4ffb1ca1
3 changed files with 166 additions and 0 deletions

View file

@ -0,0 +1,29 @@
//// [observableInferenceCanBeMade.ts]
// Repro from #33131
declare function of<T>(a: T): Observable<T>;
declare function from<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;
type ObservedValueOf<O> = O extends ObservableInput<infer T> ? T : never;
interface Subscribable<T> {
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void;
}
type ObservableInput<T> = Subscribable<T> | Subscribable<never>;
declare class Observable<T> implements Subscribable<T> {
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void;
}
function asObservable(input: string | ObservableInput<string>): Observable<string> {
return typeof input === 'string' ? of(input) : from(input)
}
//// [observableInferenceCanBeMade.js]
"use strict";
// Repro from #33131
function asObservable(input) {
return typeof input === 'string' ? of(input) : from(input);
}

View file

@ -0,0 +1,80 @@
=== tests/cases/compiler/observableInferenceCanBeMade.ts ===
// Repro from #33131
declare function of<T>(a: T): Observable<T>;
>of : Symbol(of, Decl(observableInferenceCanBeMade.ts, 0, 0))
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 2, 20))
>a : Symbol(a, Decl(observableInferenceCanBeMade.ts, 2, 23))
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 2, 20))
>Observable : Symbol(Observable, Decl(observableInferenceCanBeMade.ts, 10, 64))
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 2, 20))
declare function from<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;
>from : Symbol(from, Decl(observableInferenceCanBeMade.ts, 2, 44))
>O : Symbol(O, Decl(observableInferenceCanBeMade.ts, 3, 22))
>ObservableInput : Symbol(ObservableInput, Decl(observableInferenceCanBeMade.ts, 9, 1))
>input : Symbol(input, Decl(observableInferenceCanBeMade.ts, 3, 54))
>O : Symbol(O, Decl(observableInferenceCanBeMade.ts, 3, 22))
>Observable : Symbol(Observable, Decl(observableInferenceCanBeMade.ts, 10, 64))
>ObservedValueOf : Symbol(ObservedValueOf, Decl(observableInferenceCanBeMade.ts, 3, 96))
>O : Symbol(O, Decl(observableInferenceCanBeMade.ts, 3, 22))
type ObservedValueOf<O> = O extends ObservableInput<infer T> ? T : never;
>ObservedValueOf : Symbol(ObservedValueOf, Decl(observableInferenceCanBeMade.ts, 3, 96))
>O : Symbol(O, Decl(observableInferenceCanBeMade.ts, 5, 21))
>O : Symbol(O, Decl(observableInferenceCanBeMade.ts, 5, 21))
>ObservableInput : Symbol(ObservableInput, Decl(observableInferenceCanBeMade.ts, 9, 1))
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 5, 57))
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 5, 57))
interface Subscribable<T> {
>Subscribable : Symbol(Subscribable, Decl(observableInferenceCanBeMade.ts, 5, 73))
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 7, 23))
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void;
>subscribe : Symbol(Subscribable.subscribe, Decl(observableInferenceCanBeMade.ts, 7, 27))
>next : Symbol(next, Decl(observableInferenceCanBeMade.ts, 8, 14))
>value : Symbol(value, Decl(observableInferenceCanBeMade.ts, 8, 22))
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 7, 23))
>error : Symbol(error, Decl(observableInferenceCanBeMade.ts, 8, 40))
>error : Symbol(error, Decl(observableInferenceCanBeMade.ts, 8, 50))
>complete : Symbol(complete, Decl(observableInferenceCanBeMade.ts, 8, 70))
}
type ObservableInput<T> = Subscribable<T> | Subscribable<never>;
>ObservableInput : Symbol(ObservableInput, Decl(observableInferenceCanBeMade.ts, 9, 1))
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 10, 21))
>Subscribable : Symbol(Subscribable, Decl(observableInferenceCanBeMade.ts, 5, 73))
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 10, 21))
>Subscribable : Symbol(Subscribable, Decl(observableInferenceCanBeMade.ts, 5, 73))
declare class Observable<T> implements Subscribable<T> {
>Observable : Symbol(Observable, Decl(observableInferenceCanBeMade.ts, 10, 64))
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 13, 25))
>Subscribable : Symbol(Subscribable, Decl(observableInferenceCanBeMade.ts, 5, 73))
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 13, 25))
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void;
>subscribe : Symbol(Observable.subscribe, Decl(observableInferenceCanBeMade.ts, 13, 56))
>next : Symbol(next, Decl(observableInferenceCanBeMade.ts, 14, 14))
>value : Symbol(value, Decl(observableInferenceCanBeMade.ts, 14, 22))
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 13, 25))
>error : Symbol(error, Decl(observableInferenceCanBeMade.ts, 14, 40))
>error : Symbol(error, Decl(observableInferenceCanBeMade.ts, 14, 50))
>complete : Symbol(complete, Decl(observableInferenceCanBeMade.ts, 14, 70))
}
function asObservable(input: string | ObservableInput<string>): Observable<string> {
>asObservable : Symbol(asObservable, Decl(observableInferenceCanBeMade.ts, 15, 1))
>input : Symbol(input, Decl(observableInferenceCanBeMade.ts, 17, 22))
>ObservableInput : Symbol(ObservableInput, Decl(observableInferenceCanBeMade.ts, 9, 1))
>Observable : Symbol(Observable, Decl(observableInferenceCanBeMade.ts, 10, 64))
return typeof input === 'string' ? of(input) : from(input)
>input : Symbol(input, Decl(observableInferenceCanBeMade.ts, 17, 22))
>of : Symbol(of, Decl(observableInferenceCanBeMade.ts, 0, 0))
>input : Symbol(input, Decl(observableInferenceCanBeMade.ts, 17, 22))
>from : Symbol(from, Decl(observableInferenceCanBeMade.ts, 2, 44))
>input : Symbol(input, Decl(observableInferenceCanBeMade.ts, 17, 22))
}

View file

@ -0,0 +1,57 @@
=== tests/cases/compiler/observableInferenceCanBeMade.ts ===
// Repro from #33131
declare function of<T>(a: T): Observable<T>;
>of : <T>(a: T) => Observable<T>
>a : T
declare function from<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;
>from : <O extends ObservableInput<any>>(input: O) => Observable<ObservedValueOf<O>>
>input : O
type ObservedValueOf<O> = O extends ObservableInput<infer T> ? T : never;
>ObservedValueOf : ObservedValueOf<O>
interface Subscribable<T> {
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void;
>subscribe : (next?: ((value: T) => void) | undefined, error?: ((error: any) => void) | undefined, complete?: (() => void) | undefined) => void
>next : ((value: T) => void) | undefined
>value : T
>error : ((error: any) => void) | undefined
>error : any
>complete : (() => void) | undefined
}
type ObservableInput<T> = Subscribable<T> | Subscribable<never>;
>ObservableInput : ObservableInput<T>
declare class Observable<T> implements Subscribable<T> {
>Observable : Observable<T>
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void;
>subscribe : (next?: ((value: T) => void) | undefined, error?: ((error: any) => void) | undefined, complete?: (() => void) | undefined) => void
>next : ((value: T) => void) | undefined
>value : T
>error : ((error: any) => void) | undefined
>error : any
>complete : (() => void) | undefined
}
function asObservable(input: string | ObservableInput<string>): Observable<string> {
>asObservable : (input: string | Subscribable<never> | Subscribable<string>) => Observable<string>
>input : string | Subscribable<never> | Subscribable<string>
return typeof input === 'string' ? of(input) : from(input)
>typeof input === 'string' ? of(input) : from(input) : Observable<string>
>typeof input === 'string' : boolean
>typeof input : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"
>input : string | Subscribable<never> | Subscribable<string>
>'string' : "string"
>of(input) : Observable<string>
>of : <T>(a: T) => Observable<T>
>input : string
>from(input) : Observable<string>
>from : <O extends ObservableInput<any>>(input: O) => Observable<ObservedValueOf<O>>
>input : ObservableInput<string>
}