* 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
264 lines
5.1 KiB
Plaintext
264 lines
5.1 KiB
Plaintext
=== tests/cases/conformance/expressions/functions/arrowFunctionContexts.ts ===
|
|
// Arrow function used in with statement
|
|
with (window) {
|
|
>window : any
|
|
|
|
var p = () => this;
|
|
>p : any
|
|
>() => this : any
|
|
>this : any
|
|
}
|
|
|
|
// Arrow function as argument to super call
|
|
class Base {
|
|
>Base : Base
|
|
|
|
constructor(n: any) { }
|
|
>n : any
|
|
}
|
|
|
|
class Derived extends Base {
|
|
>Derived : Derived
|
|
>Base : Base
|
|
|
|
constructor() {
|
|
super(() => this);
|
|
>super(() => this) : void
|
|
>super : typeof Base
|
|
>() => this : () => this
|
|
>this : this
|
|
}
|
|
}
|
|
|
|
// Arrow function as function argument
|
|
window.setTimeout(() => null, 100);
|
|
>window.setTimeout(() => null, 100) : any
|
|
>window.setTimeout : any
|
|
>window : any
|
|
>setTimeout : any
|
|
>() => null : () => any
|
|
>null : null
|
|
>100 : 100
|
|
|
|
// Arrow function as value in array literal
|
|
|
|
var obj = (n: number) => '';
|
|
>obj : (n: number) => string
|
|
>(n: number) => '' : (n: number) => string
|
|
>n : number
|
|
>'' : ""
|
|
|
|
var obj: { (n: number): string; }; // OK
|
|
>obj : (n: number) => string
|
|
>n : number
|
|
|
|
var arr = [(n: number) => ''];
|
|
>arr : ((n: number) => string)[]
|
|
>[(n: number) => ''] : ((n: number) => string)[]
|
|
>(n: number) => '' : (n: number) => string
|
|
>n : number
|
|
>'' : ""
|
|
|
|
var arr: { (n: number): string; }[]; // Incorrect error here (bug 829597)
|
|
>arr : ((n: number) => string)[]
|
|
>n : number
|
|
|
|
// Arrow function as enum value
|
|
enum E {
|
|
>E : E
|
|
|
|
x = () => 4, // Error expected
|
|
>x : E
|
|
>() => 4 : () => number
|
|
>4 : 4
|
|
|
|
y = (() => this).length // error, can't use this in enum
|
|
>y : E
|
|
>(() => this).length : number
|
|
>(() => this) : () => any
|
|
>() => this : () => any
|
|
>this : any
|
|
>length : number
|
|
}
|
|
|
|
// Arrow function as module variable initializer
|
|
module M {
|
|
>M : typeof M
|
|
|
|
export var a = (s) => '';
|
|
>a : (s: any) => string
|
|
>(s) => '' : (s: any) => string
|
|
>s : any
|
|
>'' : ""
|
|
|
|
var b = (s) => s;
|
|
>b : (s: any) => any
|
|
>(s) => s : (s: any) => any
|
|
>s : any
|
|
>s : any
|
|
}
|
|
|
|
// Repeat above for module members that are functions? (necessary to redo all of them?)
|
|
module M2 {
|
|
>M2 : typeof M2
|
|
|
|
// Arrow function used in with statement
|
|
with (window) {
|
|
>window : any
|
|
|
|
var p = () => this;
|
|
>p : any
|
|
>() => this : any
|
|
>this : any
|
|
}
|
|
|
|
// Arrow function as argument to super call
|
|
class Base {
|
|
>Base : Base
|
|
|
|
constructor(n: any) { }
|
|
>n : any
|
|
}
|
|
|
|
class Derived extends Base {
|
|
>Derived : Derived
|
|
>Base : Base
|
|
|
|
constructor() {
|
|
super(() => this);
|
|
>super(() => this) : void
|
|
>super : typeof Base
|
|
>() => this : () => this
|
|
>this : this
|
|
}
|
|
}
|
|
|
|
// Arrow function as function argument
|
|
window.setTimeout(() => null, 100);
|
|
>window.setTimeout(() => null, 100) : any
|
|
>window.setTimeout : any
|
|
>window : any
|
|
>setTimeout : any
|
|
>() => null : () => any
|
|
>null : null
|
|
>100 : 100
|
|
|
|
// Arrow function as value in array literal
|
|
|
|
var obj = (n: number) => '';
|
|
>obj : (n: number) => string
|
|
>(n: number) => '' : (n: number) => string
|
|
>n : number
|
|
>'' : ""
|
|
|
|
var obj: { (n: number): string; }; // OK
|
|
>obj : (n: number) => string
|
|
>n : number
|
|
|
|
var arr = [(n: number) => ''];
|
|
>arr : ((n: number) => string)[]
|
|
>[(n: number) => ''] : ((n: number) => string)[]
|
|
>(n: number) => '' : (n: number) => string
|
|
>n : number
|
|
>'' : ""
|
|
|
|
var arr: { (n: number): string; }[]; // Incorrect error here (bug 829597)
|
|
>arr : ((n: number) => string)[]
|
|
>n : number
|
|
|
|
// Arrow function as enum value
|
|
enum E {
|
|
>E : E
|
|
|
|
x = () => 4, // Error expected
|
|
>x : E
|
|
>() => 4 : () => number
|
|
>4 : 4
|
|
|
|
y = (() => this).length
|
|
>y : E
|
|
>(() => this).length : number
|
|
>(() => this) : () => any
|
|
>() => this : () => any
|
|
>this : any
|
|
>length : number
|
|
}
|
|
|
|
// Arrow function as module variable initializer
|
|
module M {
|
|
>M : typeof M
|
|
|
|
export var a = (s) => '';
|
|
>a : (s: any) => string
|
|
>(s) => '' : (s: any) => string
|
|
>s : any
|
|
>'' : ""
|
|
|
|
var b = (s) => s;
|
|
>b : (s: any) => any
|
|
>(s) => s : (s: any) => any
|
|
>s : any
|
|
>s : any
|
|
}
|
|
|
|
}
|
|
|
|
// <Identifier>(ParamList) => { ... } is a generic arrow function
|
|
var generic1 = <T>(n: T) => [n];
|
|
>generic1 : <T>(n: T) => T[]
|
|
><T>(n: T) => [n] : <T>(n: T) => T[]
|
|
>T : T
|
|
>n : T
|
|
>T : T
|
|
>[n] : T[]
|
|
>n : T
|
|
|
|
var generic1: { <T>(n: T): T[] }; // Incorrect error, Bug 829597
|
|
>generic1 : <T>(n: T) => T[]
|
|
>T : T
|
|
>n : T
|
|
>T : T
|
|
>T : T
|
|
|
|
var generic2 = <T>(n: T) => { return [n]; };
|
|
>generic2 : <T>(n: T) => T[]
|
|
><T>(n: T) => { return [n]; } : <T>(n: T) => T[]
|
|
>T : T
|
|
>n : T
|
|
>T : T
|
|
>[n] : T[]
|
|
>n : T
|
|
|
|
var generic2: { <T>(n: T): T[] };
|
|
>generic2 : <T>(n: T) => T[]
|
|
>T : T
|
|
>n : T
|
|
>T : T
|
|
>T : T
|
|
|
|
// <Identifier> ((ParamList) => { ... } ) is a type assertion to an arrow function
|
|
var asserted1 = <any>((n) => [n]);
|
|
>asserted1 : any
|
|
><any>((n) => [n]) : any
|
|
>((n) => [n]) : (n: any) => any[]
|
|
>(n) => [n] : (n: any) => any[]
|
|
>n : any
|
|
>[n] : any[]
|
|
>n : any
|
|
|
|
var asserted1: any;
|
|
>asserted1 : any
|
|
|
|
var asserted2 = <any>((n) => { return n; });
|
|
>asserted2 : any
|
|
><any>((n) => { return n; }) : any
|
|
>((n) => { return n; }) : (n: any) => any
|
|
>(n) => { return n; } : (n: any) => any
|
|
>n : any
|
|
>n : any
|
|
|
|
var asserted2: any;
|
|
>asserted2 : any
|
|
|
|
|