Skip to content

Commit 7b4ffb1

Browse files
committed
Accept new baselines
1 parent 228b727 commit 7b4ffb1

File tree

3 files changed

+166
-0
lines changed

3 files changed

+166
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//// [observableInferenceCanBeMade.ts]
2+
// Repro from #33131
3+
4+
declare function of<T>(a: T): Observable<T>;
5+
declare function from<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;
6+
7+
type ObservedValueOf<O> = O extends ObservableInput<infer T> ? T : never;
8+
9+
interface Subscribable<T> {
10+
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void;
11+
}
12+
type ObservableInput<T> = Subscribable<T> | Subscribable<never>;
13+
14+
15+
declare class Observable<T> implements Subscribable<T> {
16+
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void;
17+
}
18+
19+
function asObservable(input: string | ObservableInput<string>): Observable<string> {
20+
return typeof input === 'string' ? of(input) : from(input)
21+
}
22+
23+
24+
//// [observableInferenceCanBeMade.js]
25+
"use strict";
26+
// Repro from #33131
27+
function asObservable(input) {
28+
return typeof input === 'string' ? of(input) : from(input);
29+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
=== tests/cases/compiler/observableInferenceCanBeMade.ts ===
2+
// Repro from #33131
3+
4+
declare function of<T>(a: T): Observable<T>;
5+
>of : Symbol(of, Decl(observableInferenceCanBeMade.ts, 0, 0))
6+
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 2, 20))
7+
>a : Symbol(a, Decl(observableInferenceCanBeMade.ts, 2, 23))
8+
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 2, 20))
9+
>Observable : Symbol(Observable, Decl(observableInferenceCanBeMade.ts, 10, 64))
10+
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 2, 20))
11+
12+
declare function from<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;
13+
>from : Symbol(from, Decl(observableInferenceCanBeMade.ts, 2, 44))
14+
>O : Symbol(O, Decl(observableInferenceCanBeMade.ts, 3, 22))
15+
>ObservableInput : Symbol(ObservableInput, Decl(observableInferenceCanBeMade.ts, 9, 1))
16+
>input : Symbol(input, Decl(observableInferenceCanBeMade.ts, 3, 54))
17+
>O : Symbol(O, Decl(observableInferenceCanBeMade.ts, 3, 22))
18+
>Observable : Symbol(Observable, Decl(observableInferenceCanBeMade.ts, 10, 64))
19+
>ObservedValueOf : Symbol(ObservedValueOf, Decl(observableInferenceCanBeMade.ts, 3, 96))
20+
>O : Symbol(O, Decl(observableInferenceCanBeMade.ts, 3, 22))
21+
22+
type ObservedValueOf<O> = O extends ObservableInput<infer T> ? T : never;
23+
>ObservedValueOf : Symbol(ObservedValueOf, Decl(observableInferenceCanBeMade.ts, 3, 96))
24+
>O : Symbol(O, Decl(observableInferenceCanBeMade.ts, 5, 21))
25+
>O : Symbol(O, Decl(observableInferenceCanBeMade.ts, 5, 21))
26+
>ObservableInput : Symbol(ObservableInput, Decl(observableInferenceCanBeMade.ts, 9, 1))
27+
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 5, 57))
28+
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 5, 57))
29+
30+
interface Subscribable<T> {
31+
>Subscribable : Symbol(Subscribable, Decl(observableInferenceCanBeMade.ts, 5, 73))
32+
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 7, 23))
33+
34+
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void;
35+
>subscribe : Symbol(Subscribable.subscribe, Decl(observableInferenceCanBeMade.ts, 7, 27))
36+
>next : Symbol(next, Decl(observableInferenceCanBeMade.ts, 8, 14))
37+
>value : Symbol(value, Decl(observableInferenceCanBeMade.ts, 8, 22))
38+
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 7, 23))
39+
>error : Symbol(error, Decl(observableInferenceCanBeMade.ts, 8, 40))
40+
>error : Symbol(error, Decl(observableInferenceCanBeMade.ts, 8, 50))
41+
>complete : Symbol(complete, Decl(observableInferenceCanBeMade.ts, 8, 70))
42+
}
43+
type ObservableInput<T> = Subscribable<T> | Subscribable<never>;
44+
>ObservableInput : Symbol(ObservableInput, Decl(observableInferenceCanBeMade.ts, 9, 1))
45+
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 10, 21))
46+
>Subscribable : Symbol(Subscribable, Decl(observableInferenceCanBeMade.ts, 5, 73))
47+
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 10, 21))
48+
>Subscribable : Symbol(Subscribable, Decl(observableInferenceCanBeMade.ts, 5, 73))
49+
50+
51+
declare class Observable<T> implements Subscribable<T> {
52+
>Observable : Symbol(Observable, Decl(observableInferenceCanBeMade.ts, 10, 64))
53+
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 13, 25))
54+
>Subscribable : Symbol(Subscribable, Decl(observableInferenceCanBeMade.ts, 5, 73))
55+
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 13, 25))
56+
57+
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void;
58+
>subscribe : Symbol(Observable.subscribe, Decl(observableInferenceCanBeMade.ts, 13, 56))
59+
>next : Symbol(next, Decl(observableInferenceCanBeMade.ts, 14, 14))
60+
>value : Symbol(value, Decl(observableInferenceCanBeMade.ts, 14, 22))
61+
>T : Symbol(T, Decl(observableInferenceCanBeMade.ts, 13, 25))
62+
>error : Symbol(error, Decl(observableInferenceCanBeMade.ts, 14, 40))
63+
>error : Symbol(error, Decl(observableInferenceCanBeMade.ts, 14, 50))
64+
>complete : Symbol(complete, Decl(observableInferenceCanBeMade.ts, 14, 70))
65+
}
66+
67+
function asObservable(input: string | ObservableInput<string>): Observable<string> {
68+
>asObservable : Symbol(asObservable, Decl(observableInferenceCanBeMade.ts, 15, 1))
69+
>input : Symbol(input, Decl(observableInferenceCanBeMade.ts, 17, 22))
70+
>ObservableInput : Symbol(ObservableInput, Decl(observableInferenceCanBeMade.ts, 9, 1))
71+
>Observable : Symbol(Observable, Decl(observableInferenceCanBeMade.ts, 10, 64))
72+
73+
return typeof input === 'string' ? of(input) : from(input)
74+
>input : Symbol(input, Decl(observableInferenceCanBeMade.ts, 17, 22))
75+
>of : Symbol(of, Decl(observableInferenceCanBeMade.ts, 0, 0))
76+
>input : Symbol(input, Decl(observableInferenceCanBeMade.ts, 17, 22))
77+
>from : Symbol(from, Decl(observableInferenceCanBeMade.ts, 2, 44))
78+
>input : Symbol(input, Decl(observableInferenceCanBeMade.ts, 17, 22))
79+
}
80+
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
=== tests/cases/compiler/observableInferenceCanBeMade.ts ===
2+
// Repro from #33131
3+
4+
declare function of<T>(a: T): Observable<T>;
5+
>of : <T>(a: T) => Observable<T>
6+
>a : T
7+
8+
declare function from<O extends ObservableInput<any>>(input: O): Observable<ObservedValueOf<O>>;
9+
>from : <O extends ObservableInput<any>>(input: O) => Observable<ObservedValueOf<O>>
10+
>input : O
11+
12+
type ObservedValueOf<O> = O extends ObservableInput<infer T> ? T : never;
13+
>ObservedValueOf : ObservedValueOf<O>
14+
15+
interface Subscribable<T> {
16+
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void;
17+
>subscribe : (next?: ((value: T) => void) | undefined, error?: ((error: any) => void) | undefined, complete?: (() => void) | undefined) => void
18+
>next : ((value: T) => void) | undefined
19+
>value : T
20+
>error : ((error: any) => void) | undefined
21+
>error : any
22+
>complete : (() => void) | undefined
23+
}
24+
type ObservableInput<T> = Subscribable<T> | Subscribable<never>;
25+
>ObservableInput : ObservableInput<T>
26+
27+
28+
declare class Observable<T> implements Subscribable<T> {
29+
>Observable : Observable<T>
30+
31+
subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): void;
32+
>subscribe : (next?: ((value: T) => void) | undefined, error?: ((error: any) => void) | undefined, complete?: (() => void) | undefined) => void
33+
>next : ((value: T) => void) | undefined
34+
>value : T
35+
>error : ((error: any) => void) | undefined
36+
>error : any
37+
>complete : (() => void) | undefined
38+
}
39+
40+
function asObservable(input: string | ObservableInput<string>): Observable<string> {
41+
>asObservable : (input: string | Subscribable<never> | Subscribable<string>) => Observable<string>
42+
>input : string | Subscribable<never> | Subscribable<string>
43+
44+
return typeof input === 'string' ? of(input) : from(input)
45+
>typeof input === 'string' ? of(input) : from(input) : Observable<string>
46+
>typeof input === 'string' : boolean
47+
>typeof input : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"
48+
>input : string | Subscribable<never> | Subscribable<string>
49+
>'string' : "string"
50+
>of(input) : Observable<string>
51+
>of : <T>(a: T) => Observable<T>
52+
>input : string
53+
>from(input) : Observable<string>
54+
>from : <O extends ObservableInput<any>>(input: O) => Observable<ObservedValueOf<O>>
55+
>input : ObservableInput<string>
56+
}
57+

0 commit comments

Comments
 (0)