* Always generate type & symbol baselines * Accept changed shadowed baselines * Accept brand new type and symbol baselines * Allow `getTypeAtLocation` to return undefined in the type writer * Accept baselines which had missing type information * Bind container for dynamically names enum members so they may be printed * Accept type/symbol baselines for enums with computed members * First pass at reducing typeWriter memory overhead * Use generators to allow for type and symbol baselines with no cache * Accept new baselines for tests whose output was fixed by better newline splitting * Hard cap on number of declarations printed, cache declaration print text * handle differing newlines better still to handle RWC newlines * Lower abridging count, accept abridged baselines * Limit max RWC error output size, limit RWC type and symbol baseline input size * Move skip logic into type and symbol baseliner to streamline error handling * Accept removal of empty baselines * Canonicalize path earlier to handle odd paths in input files * Do canonicalization earlier still, also ensure parallel perf profiles for different targets do not trample one another * No need to pathify again
62 lines
1.7 KiB
Plaintext
62 lines
1.7 KiB
Plaintext
=== tests/cases/compiler/promiseChaining1.ts ===
|
|
// same example but with constraints on each type parameter
|
|
class Chain2<T extends { length: number }> {
|
|
>Chain2 : Chain2<T>
|
|
>T : T
|
|
>length : number
|
|
|
|
constructor(public value: T) { }
|
|
>value : T
|
|
>T : T
|
|
|
|
then<S extends Function>(cb: (x: T) => S): Chain2<S> {
|
|
>then : <S extends Function>(cb: (x: T) => S) => Chain2<S>
|
|
>S : S
|
|
>Function : Function
|
|
>cb : (x: T) => S
|
|
>x : T
|
|
>T : T
|
|
>S : S
|
|
>Chain2 : Chain2<T>
|
|
>S : S
|
|
|
|
var result = cb(this.value);
|
|
>result : S
|
|
>cb(this.value) : S
|
|
>cb : (x: T) => S
|
|
>this.value : T
|
|
>this : this
|
|
>value : T
|
|
|
|
// should get a fresh type parameter which each then call
|
|
var z = this.then(x => result)/*S*/.then(x => "abc")/*Function*/.then(x => x.length)/*number*/; // Should error on "abc" because it is not a Function
|
|
>z : any
|
|
>this.then(x => result)/*S*/.then(x => "abc")/*Function*/.then(x => x.length) : any
|
|
>this.then(x => result)/*S*/.then(x => "abc")/*Function*/.then : any
|
|
>this.then(x => result)/*S*/.then(x => "abc") : any
|
|
>this.then(x => result)/*S*/.then : <S extends Function>(cb: (x: S) => S) => Chain2<S>
|
|
>this.then(x => result) : Chain2<S>
|
|
>this.then : <S extends Function>(cb: (x: T) => S) => Chain2<S>
|
|
>this : this
|
|
>then : <S extends Function>(cb: (x: T) => S) => Chain2<S>
|
|
>x => result : (x: T) => S
|
|
>x : T
|
|
>result : S
|
|
>then : <S extends Function>(cb: (x: S) => S) => Chain2<S>
|
|
>x => "abc" : (x: S) => string
|
|
>x : S
|
|
>"abc" : "abc"
|
|
>then : any
|
|
>x => x.length : (x: any) => any
|
|
>x : any
|
|
>x.length : any
|
|
>x : any
|
|
>length : any
|
|
|
|
return new Chain2(result);
|
|
>new Chain2(result) : Chain2<S>
|
|
>Chain2 : typeof Chain2
|
|
>result : S
|
|
}
|
|
}
|