Accepting new baselines

This commit is contained in:
Anders Hejlsberg 2014-10-13 06:56:58 -07:00
parent 83d9aed005
commit a76a418814
56 changed files with 918 additions and 905 deletions

View File

@ -17,7 +17,7 @@ interface IHasVisualizationModel {
var xs: IHasVisualizationModel[] = [moduleA];
>xs : IHasVisualizationModel[]
>IHasVisualizationModel : IHasVisualizationModel
>[moduleA] : IHasVisualizationModel[]
>[moduleA] : typeof moduleA[]
>moduleA : typeof moduleA
var xs2: typeof moduleA[] = [moduleA];

View File

@ -189,7 +189,7 @@ module EmptyTypes {
>x : number
>y : base
>base : base
>[{ x: 7, y: new derived() }, { x: 5, y: new base() }] : { x: number; y: base; }[]
>[{ x: 7, y: new derived() }, { x: 5, y: new base() }] : { x: number; y: derived; }[]
>{ x: 7, y: new derived() } : { x: number; y: derived; }
>x : number
>y : derived
@ -206,7 +206,7 @@ module EmptyTypes {
>x : boolean
>y : base
>base : base
>[{ x: true, y: new derived() }, { x: false, y: new base() }] : { x: boolean; y: base; }[]
>[{ x: true, y: new derived() }, { x: false, y: new base() }] : { x: boolean; y: derived; }[]
>{ x: true, y: new derived() } : { x: boolean; y: derived; }
>x : boolean
>y : derived
@ -223,7 +223,7 @@ module EmptyTypes {
>x : string
>y : base
>base : base
>[{ x: undefined, y: new base() }, { x: '', y: new derived() }] : { x: string; y: base; }[]
>[{ x: undefined, y: new base() }, { x: '', y: new derived() }] : { x: string; y: derived; }[]
>{ x: undefined, y: new base() } : { x: undefined; y: base; }
>x : undefined
>undefined : undefined
@ -557,7 +557,7 @@ module NonEmptyTypes {
>x : string
>y : base
>base : base
>[{ x: undefined, y: new base() }, { x: '', y: new derived() }] : { x: string; y: base; }[]
>[{ x: undefined, y: new base() }, { x: '', y: new derived() }] : Array<{ x: undefined; y: base; } | { x: string; y: derived; }>
>{ x: undefined, y: new base() } : { x: undefined; y: base; }
>x : undefined
>undefined : undefined

View File

@ -1,7 +1,7 @@
=== tests/cases/compiler/arrayConcat2.ts ===
var a: string[] = [];
>a : string[]
>[] : string[]
>[] : undefined[]
a.concat("hello", 'world');
>a.concat("hello", 'world') : string[]

View File

@ -25,7 +25,7 @@ var y = new Array<number>();
var x2: number[] = [];
>x2 : number[]
>[] : number[]
>[] : undefined[]
var x2: number[] = new Array(1);
>x2 : number[]

View File

@ -40,7 +40,7 @@ function bar(animals: { [n: number]: IAnimal }) { }
foo([
>foo([ new Giraffe(), new Elephant()]) : void
>foo : (animals: IAnimal[]) => void
>[ new Giraffe(), new Elephant()] : IAnimal[]
>[ new Giraffe(), new Elephant()] : Array<Giraffe | Elephant>
new Giraffe(),
>new Giraffe() : Giraffe
@ -54,7 +54,7 @@ foo([
bar([
>bar([ new Giraffe(), new Elephant()]) : void
>bar : (animals: { [x: number]: IAnimal; }) => void
>[ new Giraffe(), new Elephant()] : IAnimal[]
>[ new Giraffe(), new Elephant()] : Array<Giraffe | Elephant>
new Giraffe(),
>new Giraffe() : Giraffe

View File

@ -7,5 +7,5 @@ function panic(val: string[], ...opt: string[]) { }
panic([], 'one', 'two');
>panic([], 'one', 'two') : void
>panic : (val: string[], ...opt: string[]) => void
>[] : string[]
>[] : undefined[]

View File

@ -25,7 +25,7 @@ class ActionB extends Action {
var x1: Action[] = [
>x1 : Action[]
>Action : Action
>[ { id: 2, trueness: false }, { id: 3, name: "three" }] : Action[]
>[ { id: 2, trueness: false }, { id: 3, name: "three" }] : Array<{ id: number; trueness: boolean; } | { id: number; name: string; }>
{ id: 2, trueness: false },
>{ id: 2, trueness: false } : { id: number; trueness: boolean; }
@ -42,7 +42,7 @@ var x1: Action[] = [
var x2: Action[] = [
>x2 : Action[]
>Action : Action
>[ new ActionA(), new ActionB()] : Action[]
>[ new ActionA(), new ActionB()] : Array<ActionA | ActionB>
new ActionA(),
>new ActionA() : ActionA
@ -78,7 +78,7 @@ var z1: { id: number }[] =
>id : number
[
>[ { id: 2, trueness: false }, { id: 3, name: "three" } ] : { id: number; }[]
>[ { id: 2, trueness: false }, { id: 3, name: "three" } ] : Array<{ id: number; trueness: boolean; } | { id: number; name: string; }>
{ id: 2, trueness: false },
>{ id: 2, trueness: false } : { id: number; trueness: boolean; }
@ -97,7 +97,7 @@ var z2: { id: number }[] =
>id : number
[
>[ new ActionA(), new ActionB() ] : { id: number; }[]
>[ new ActionA(), new ActionB() ] : Array<ActionA | ActionB>
new ActionA(),
>new ActionA() : ActionA
@ -114,7 +114,7 @@ var z3: { id: number }[] =
>id : number
[
>[ new Action(), new ActionA(), new ActionB() ] : { id: number; }[]
>[ new Action(), new ActionA(), new ActionB() ] : Action[]
new Action(),
>new Action() : Action

View File

@ -65,7 +65,7 @@ var context1: { [n: number]: { a: string; b: number; }; } = [{ a: '', b: 0, c: '
>n : number
>a : string
>b : number
>[{ a: '', b: 0, c: '' }, { a: "", b: 3, c: 0 }] : { a: string; b: number; }[]
>[{ a: '', b: 0, c: '' }, { a: "", b: 3, c: 0 }] : Array<{ a: string; b: number; c: string; } | { a: string; b: number; c: number; }>
>{ a: '', b: 0, c: '' } : { a: string; b: number; c: string; }
>a : string
>b : number
@ -105,7 +105,7 @@ class Derived2 extends Base { private n };
var context3: Base[] = [new Derived1(), new Derived2()];
>context3 : Base[]
>Base : Base
>[new Derived1(), new Derived2()] : Base[]
>[new Derived1(), new Derived2()] : Array<Derived1 | Derived2>
>new Derived1() : Derived1
>Derived1 : typeof Derived1
>new Derived2() : Derived2
@ -115,7 +115,7 @@ var context3: Base[] = [new Derived1(), new Derived2()];
var context4: Base[] = [new Derived1(), new Derived1()];
>context4 : Base[]
>Base : Base
>[new Derived1(), new Derived1()] : Base[]
>[new Derived1(), new Derived1()] : Derived1[]
>new Derived1() : Derived1
>Derived1 : typeof Derived1
>new Derived1() : Derived1

View File

@ -6,6 +6,6 @@ function method() {
>dictionary : { [x: string]: string; }
><{ [index: string]: string; }>{} : { [x: string]: string; }
>index : string
>{} : { [x: string]: string; }
>{} : { [x: string]: undefined; }
}

View File

@ -26,18 +26,18 @@ interface Transform3D {
var style: IBookStyle = {
>style : IBookStyle
>IBookStyle : IBookStyle
>{ initialLeftPageTransforms: (width: number) => { return [ {'ry': null } ]; }} : { initialLeftPageTransforms: (width: number) => NamedTransform[]; }
>{ initialLeftPageTransforms: (width: number) => { return [ {'ry': null } ]; }} : { initialLeftPageTransforms: (width: number) => { [x: string]: any; 'ry': any; }[]; }
initialLeftPageTransforms: (width: number) => {
>initialLeftPageTransforms : (width: number) => NamedTransform[]
>(width: number) => { return [ {'ry': null } ]; } : (width: number) => NamedTransform[]
>initialLeftPageTransforms : (width: number) => { [x: string]: any; 'ry': any; }[]
>(width: number) => { return [ {'ry': null } ]; } : (width: number) => { [x: string]: any; 'ry': any; }[]
>width : number
return [
>[ {'ry': null } ] : NamedTransform[]
>[ {'ry': null } ] : { [x: string]: null; 'ry': null; }[]
{'ry': null }
>{'ry': null } : { [x: string]: Transform3D; 'ry': null; }
>{'ry': null } : { [x: string]: null; 'ry': null; }
];
}

View File

@ -5,7 +5,7 @@ function foo(param: {():number; (i:number):number; }[]) { }; foo([function(){ret
>i : number
>foo([function(){return 1;}, function(){return 4}]) : void
>foo : (param: { (): number; (i: number): number; }[]) => void
>[function(){return 1;}, function(){return 4}] : { (): number; (i: number): number; }[]
>[function(){return 1;}, function(){return 4}] : { (): number; }[]
>function(){return 1;} : () => number
>function(){return 4} : () => number

View File

@ -131,11 +131,11 @@ module templa.dom.mvc.composite {
>super : typeof AbstractElementController
this._controllers = [];
>this._controllers = [] : templa.mvc.IController<templa.mvc.IModel>[]
>this._controllers = [] : undefined[]
>this._controllers : templa.mvc.IController<templa.mvc.IModel>[]
>this : AbstractCompositeElementController<ModelType>
>_controllers : templa.mvc.IController<templa.mvc.IModel>[]
>[] : templa.mvc.IController<templa.mvc.IModel>[]
>[] : undefined[]
}
}
}

View File

@ -9,7 +9,7 @@ var ANY1;
var ANY2: any[] = ["", ""];
>ANY2 : any[]
>["", ""] : any[]
>["", ""] : string[]
var obj = {x:1,y:null};
>obj : { x: number; y: any; }

View File

@ -49,7 +49,7 @@ b = d2;
var r: Base[] = [d1, d2];
>r : Base[]
>Base : Base
>[d1, d2] : Base[]
>[d1, d2] : Array<Derived | Derived2>
>d1 : Derived
>d2 : Derived2

View File

@ -21,7 +21,7 @@ interface IIntervalTreeNode {
var test: IIntervalTreeNode[] = [{ interval: { begin: 0 }, children: null }]; // was error here because best common type is {}
>test : IIntervalTreeNode[]
>IIntervalTreeNode : IIntervalTreeNode
>[{ interval: { begin: 0 }, children: null }] : IIntervalTreeNode[]
>[{ interval: { begin: 0 }, children: null }] : { interval: { begin: number; }; children: null; }[]
>{ interval: { begin: 0 }, children: null } : { interval: { begin: number; }; children: null; }
>interval : { begin: number; }
>{ begin: 0 } : { begin: number; }

View File

@ -25,7 +25,7 @@ var moduleMap: { [key: string]: IHasVisualizationModel } = {
>moduleMap : { [x: string]: IHasVisualizationModel; }
>key : string
>IHasVisualizationModel : IHasVisualizationModel
>{ "moduleA": moduleA, "moduleB": moduleB} : { [x: string]: IHasVisualizationModel; "moduleA": typeof moduleA; "moduleB": typeof moduleB; }
>{ "moduleA": moduleA, "moduleB": moduleB} : { [x: string]: typeof moduleA; "moduleA": typeof moduleA; "moduleB": typeof moduleB; }
"moduleA": moduleA,
>moduleA : typeof moduleA

View File

@ -109,11 +109,11 @@ for (var a = ['a', 'b']; ;) { }
for (var a = <string[]>[]; ;) { }
>a : string[]
><string[]>[] : string[]
>[] : string[]
>[] : undefined[]
for (var a: string[] = []; ;) { }
>a : string[]
>[] : string[]
>[] : undefined[]
for (var a = new Array<string>(); ;) { }
>a : string[]

View File

@ -1,7 +1,7 @@
=== tests/cases/compiler/functionCall3.ts ===
function foo():any[]{return [1];}
>foo : () => any[]
>[1] : any[]
>[1] : number[]
var x = foo();
>x : any[]

View File

@ -19,7 +19,7 @@ var x = foo([{a:'s'}]);
>x : number
>foo([{a:'s'}]) : number
>foo : { (bar: { a: number; }[]): string; (bar: { a: any; }[]): number; }
>[{a:'s'}] : { a: any; }[]
>[{a:'s'}] : { a: string; }[]
>{a:'s'} : { a: string; }
>a : string

View File

@ -5,7 +5,7 @@ class EventBase {
private _listeners: { (...args: any[]): void; }[] = [];
>_listeners : { (...args: any[]): void; }[]
>args : any[]
>[] : { (...args: any[]): void; }[]
>[] : undefined[]
add(listener: (...args: any[]) => void): void {
>add : (listener: (...args: any[]) => void) => void

File diff suppressed because it is too large Load Diff

View File

@ -16,6 +16,6 @@ function map<U>() {
var ys: U[] = [];
>ys : U[]
>U : U
>[] : U[]
>[] : undefined[]
}

View File

@ -14,11 +14,11 @@ class BaseCollection2<TItem extends CollectionItem2> {
constructor() {
this._itemsByKey = {};
>this._itemsByKey = {} : { [x: string]: TItem; }
>this._itemsByKey = {} : { [x: string]: undefined; }
>this._itemsByKey : { [x: string]: TItem; }
>this : BaseCollection2<TItem>
>_itemsByKey : { [x: string]: TItem; }
>{} : { [x: string]: TItem; }
>{} : { [x: string]: undefined; }
}
}

View File

@ -25,19 +25,19 @@ var ra = foo<any[]>([1, 2]); // any[]
>ra : any[]
>foo<any[]>([1, 2]) : any[]
>foo : <T>(t: T) => T
>[1, 2] : any[]
>[1, 2] : number[]
var r2 = foo([]); // any[]
>r2 : any[]
>foo([]) : any[]
>foo : <T>(t: T) => T
>[] : any[]
>[] : undefined[]
var r3 = foo<number[]>([]); // number[]
>r3 : number[]
>foo<number[]>([]) : number[]
>foo : <T>(t: T) => T
>[] : number[]
>[] : undefined[]
var r4 = foo([1, '']); // {}[]
>r4 : Array<string | number>
@ -49,12 +49,12 @@ var r5 = foo<any[]>([1, '']); // any[]
>r5 : any[]
>foo<any[]>([1, '']) : any[]
>foo : <T>(t: T) => T
>[1, ''] : any[]
>[1, ''] : Array<string | number>
var r6 = foo<Object[]>([1, '']); // Object[]
>r6 : Object[]
>foo<Object[]>([1, '']) : Object[]
>foo : <T>(t: T) => T
>Object : Object
>[1, ''] : Object[]
>[1, ''] : Array<string | number>

View File

@ -69,7 +69,7 @@ var r3 = _.all([], _.identity);
>_.all : <T>(list: T[], iterator?: Underscore.Iterator<T, boolean>, context?: any) => T
>_ : Underscore.Static
>all : <T>(list: T[], iterator?: Underscore.Iterator<T, boolean>, context?: any) => T
>[] : any[]
>[] : undefined[]
>_.identity : <T>(value: T) => T
>_ : Underscore.Static
>identity : <T>(value: T) => T

View File

@ -8,7 +8,7 @@ class LazyArray<T> {
><{ [objectId: string]: T; }>{} : { [x: string]: T; }
>objectId : string
>T : T
>{} : { [x: string]: T; }
>{} : { [x: string]: undefined; }
array() {
>array : () => { [x: string]: T; }

View File

@ -212,24 +212,24 @@ module WithContextualType {
var a: Base[] = [derived, derived2];
>a : Base[]
>Base : Base
>[derived, derived2] : Base[]
>[derived, derived2] : Array<Derived | Derived2>
>derived : Derived
>derived2 : Derived2
var b: Derived[] = [null];
>b : Derived[]
>Derived : Derived
>[null] : Derived[]
>[null] : null[]
var c: Derived[] = [];
>c : Derived[]
>Derived : Derived
>[] : Derived[]
>[] : undefined[]
var d: { (): Base }[] = [() => derived, () => derived2];
>d : { (): Base; }[]
>Base : Base
>[() => derived, () => derived2] : { (): Base; }[]
>[() => derived, () => derived2] : Array<{ (): Derived; } | { (): Derived2; }>
>() => derived : () => Derived
>derived : Derived
>() => derived2 : () => Derived2
@ -512,7 +512,7 @@ function foo4<T extends Base, U extends Base>(t: T, u: U) {
var k: Base[] = [t, u];
>k : Base[]
>Base : Base
>[t, u] : Base[]
>[t, u] : Array<T | U>
>t : T
>u : U
}

View File

@ -9,7 +9,7 @@ var ANY1;
var ANY2: any[] = ["", ""];
>ANY2 : any[]
>["", ""] : any[]
>["", ""] : string[]
var obj = {x:1,y:null};
>obj : { x: number; y: any; }

View File

@ -24,10 +24,10 @@ var x1 = foo({ 0: 0, 1: 1 }); // type should be number
>{ 0: 0, 1: 1 } : { [x: number]: number; 0: number; 1: number; }
var x2 = foo({ zero: 0, one: 1 });
>x2 : {}
>foo({ zero: 0, one: 1 }) : {}
>x2 : any
>foo({ zero: 0, one: 1 }) : any
>foo : <T>(items: { [x: number]: T; }) => T
>{ zero: 0, one: 1 } : { [x: number]: {}; zero: number; one: number; }
>{ zero: 0, one: 1 } : { [x: number]: undefined; zero: number; one: number; }
>zero : number
>one : number

View File

@ -17,7 +17,7 @@ interface JQuery {
var jq:JQuery={ 0: { id : "a" }, 1: { id : "b" } };
>jq : JQuery
>JQuery : JQuery
>{ 0: { id : "a" }, 1: { id : "b" } } : { [x: number]: JQueryElement; 0: { id: string; }; 1: { id: string; }; }
>{ 0: { id : "a" }, 1: { id : "b" } } : { [x: number]: { id: string; }; 0: { id: string; }; 1: { id: string; }; }
>{ id : "a" } : { id: string; }
>id : string
>{ id : "b" } : { id: string; }

View File

@ -0,0 +1,20 @@
tests/cases/compiler/indexer2.ts(6,25): error TS2353: Neither type '{ [x: number]: undefined; }' nor type 'IDirectChildrenMap' is assignable to the other:
Types of property 'hasOwnProperty' are incompatible:
Type '(v: string) => boolean' is not assignable to type '(objectId: number) => boolean':
Types of parameters 'v' and 'objectId' are incompatible:
Type 'string' is not assignable to type 'number'.
==== tests/cases/compiler/indexer2.ts (1 errors) ====
interface IHeapObjectProperty {}
interface IDirectChildrenMap {
hasOwnProperty(objectId: number) : boolean;
[objectId: number] : IHeapObjectProperty[];
}
var directChildrenMap = <IDirectChildrenMap>{};
~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2353: Neither type '{ [x: number]: undefined; }' nor type 'IDirectChildrenMap' is assignable to the other:
!!! error TS2353: Types of property 'hasOwnProperty' are incompatible:
!!! error TS2353: Type '(v: string) => boolean' is not assignable to type '(objectId: number) => boolean':
!!! error TS2353: Types of parameters 'v' and 'objectId' are incompatible:
!!! error TS2353: Type 'string' is not assignable to type 'number'.

View File

@ -1,21 +0,0 @@
=== tests/cases/compiler/indexer2.ts ===
interface IHeapObjectProperty {}
>IHeapObjectProperty : IHeapObjectProperty
interface IDirectChildrenMap {
>IDirectChildrenMap : IDirectChildrenMap
hasOwnProperty(objectId: number) : boolean;
>hasOwnProperty : (objectId: number) => boolean
>objectId : number
[objectId: number] : IHeapObjectProperty[];
>objectId : number
>IHeapObjectProperty : IHeapObjectProperty
}
var directChildrenMap = <IDirectChildrenMap>{};
>directChildrenMap : IDirectChildrenMap
><IDirectChildrenMap>{} : IDirectChildrenMap
>IDirectChildrenMap : IDirectChildrenMap
>{} : { [x: number]: IHeapObjectProperty[]; }

View File

@ -1,7 +1,12 @@
tests/cases/compiler/indexer2A.ts(4,5): error TS2391: Function implementation is missing or not immediately following the declaration.
tests/cases/compiler/indexer2A.ts(7,25): error TS2353: Neither type '{ [x: number]: undefined; }' nor type 'IDirectChildrenMap' is assignable to the other:
Types of property 'hasOwnProperty' are incompatible:
Type '(v: string) => boolean' is not assignable to type '(objectId: number) => boolean':
Types of parameters 'v' and 'objectId' are incompatible:
Type 'string' is not assignable to type 'number'.
==== tests/cases/compiler/indexer2A.ts (1 errors) ====
==== tests/cases/compiler/indexer2A.ts (2 errors) ====
class IHeapObjectProperty { }
class IDirectChildrenMap {
// Decided to enforce a semicolon after declarations
@ -10,4 +15,10 @@ tests/cases/compiler/indexer2A.ts(4,5): error TS2391: Function implementation is
!!! error TS2391: Function implementation is missing or not immediately following the declaration.
[objectId: number]: IHeapObjectProperty[]
}
var directChildrenMap = <IDirectChildrenMap>{};
var directChildrenMap = <IDirectChildrenMap>{};
~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2353: Neither type '{ [x: number]: undefined; }' nor type 'IDirectChildrenMap' is assignable to the other:
!!! error TS2353: Types of property 'hasOwnProperty' are incompatible:
!!! error TS2353: Type '(v: string) => boolean' is not assignable to type '(objectId: number) => boolean':
!!! error TS2353: Types of parameters 'v' and 'objectId' are incompatible:
!!! error TS2353: Type 'string' is not assignable to type 'number'.

View File

@ -3,7 +3,7 @@ var dateMap: { [x: string]: Date; } = {}
>dateMap : { [x: string]: Date; }
>x : string
>Date : Date
>{} : { [x: string]: Date; }
>{} : { [x: string]: undefined; }
var r: Date = dateMap["hello"] // result type includes indexer using BCT
>r : Date

View File

@ -17,7 +17,7 @@ class JQuery {
var jq:JQuery={ 0: { id : "a" }, 1: { id : "b" } };
>jq : JQuery
>JQuery : JQuery
>{ 0: { id : "a" }, 1: { id : "b" } } : { [x: number]: JQueryElement; 0: { id: string; }; 1: { id: string; }; }
>{ 0: { id : "a" }, 1: { id : "b" } } : { [x: number]: { id: string; }; 0: { id: string; }; 1: { id: string; }; }
>{ id : "a" } : { id: string; }
>id : string
>{ id : "b" } : { id: string; }

View File

@ -34,7 +34,7 @@ var result = zipWith([1, 2], ['a', 'b'], pair);
>zipWith([1, 2], ['a', 'b'], pair) : { x: number; y: {}; }[]
>zipWith : <T, S, U>(a: T[], b: S[], f: (x: T) => (y: S) => U) => U[]
>[1, 2] : number[]
>['a', 'b'] : {}[]
>['a', 'b'] : string[]
>pair : <T, S>(x: T) => (y: S) => { x: T; y: S; }
var i = result[0].x; // number

View File

@ -25,6 +25,6 @@ foo([]).bar;
>foo([]).bar : any
>foo([]) : any
>foo : <T>(arr: T[]) => T
>[] : any[]
>[] : undefined[]
>bar : any

View File

@ -27,11 +27,11 @@ class Bug {
>ok : () => void
this.values = {};
>this.values = {} : { [x: string]: IOptions; }
>this.values = {} : { [x: string]: undefined; }
>this.values : IMap
>this : Bug
>values : IMap
>{} : { [x: string]: IOptions; }
>{} : { [x: string]: undefined; }
this.values['comments'] = { italic: true };
>this.values['comments'] = { italic: true } : { italic: boolean; }
@ -46,11 +46,11 @@ class Bug {
>shouldBeOK : () => void
this.values = {
>this.values = { comments: { italic: true } } : { [x: string]: IOptions; comments: { italic: boolean; }; }
>this.values = { comments: { italic: true } } : { [x: string]: { italic: boolean; }; comments: { italic: boolean; }; }
>this.values : IMap
>this : Bug
>values : IMap
>{ comments: { italic: true } } : { [x: string]: IOptions; comments: { italic: boolean; }; }
>{ comments: { italic: true } } : { [x: string]: { italic: boolean; }; comments: { italic: boolean; }; }
comments: { italic: true }
>comments : { italic: boolean; }

View File

@ -20,7 +20,7 @@ class Employee {
public reports: Employee[] = [];
>reports : Employee[]
>Employee : Employee
>[] : Employee[]
>[] : undefined[]
}
class Employee2 {
@ -57,11 +57,11 @@ class Employee2 {
>manager : Employee
this.reports = [];
>this.reports = [] : Employee[]
>this.reports = [] : undefined[]
>this.reports : Employee[]
>this : Employee2
>reports : Employee[]
>[] : Employee[]
>[] : undefined[]
}
}

View File

@ -9,7 +9,7 @@ var ANY1;
var ANY2: any[] = ["", ""];
>ANY2 : any[]
>["", ""] : any[]
>["", ""] : string[]
var obj: () => {}
>obj : () => {}

View File

@ -1,21 +0,0 @@
tests/cases/compiler/noImplicitAnyFunctionExpressionAssignment.ts(2,27): error TS7011: Function expression, which lacks return-type annotation, implicitly has an 'any' return type.
tests/cases/compiler/noImplicitAnyFunctionExpressionAssignment.ts(6,28): error TS7010: 'f', which lacks return-type annotation, implicitly has an 'any' return type.
==== tests/cases/compiler/noImplicitAnyFunctionExpressionAssignment.ts (2 errors) ====
var x: (a: any) => void = function <T>(x: T) {
~~~~~~~~~~~~~~~~~~~~
return null;
~~~~~~~~~~~~~~~~
};
~
!!! error TS7011: Function expression, which lacks return-type annotation, implicitly has an 'any' return type.
var x2: (a: any) => void = function f<T>(x: T) {
~~~~~~~~~~~~~~~~~~~~~
return null;
~~~~~~~~~~~~~~~~
};
~
!!! error TS7010: 'f', which lacks return-type annotation, implicitly has an 'any' return type.

View File

@ -0,0 +1,24 @@
=== tests/cases/compiler/noImplicitAnyFunctionExpressionAssignment.ts ===
var x: (a: any) => void = function <T>(x: T) {
>x : (a: any) => void
>a : any
>function <T>(x: T) { return null;} : <T>(x: T) => any
>T : T
>x : T
>T : T
return null;
};
var x2: (a: any) => void = function f<T>(x: T) {
>x2 : (a: any) => void
>a : any
>function f<T>(x: T) { return null;} : <T>(x: T) => any
>f : <T>(x: T) => any
>T : T
>x : T
>T : T
return null;
};

View File

@ -22,7 +22,7 @@ var x: {
>A : A
} = { data: new B() }
>{ data: new B() } : { [x: number]: A; data: B; }
>{ data: new B() } : { [x: number]: undefined; data: B; }
>data : B
>new B() : B
>B : typeof B

View File

@ -23,11 +23,11 @@ class Emitter {
constructor () {
this.listeners = {};
>this.listeners = {} : { [x: string]: Callback; }
>this.listeners = {} : { [x: string]: undefined; }
>this.listeners : IMap
>this : Emitter
>listeners : IMap
>{} : { [x: string]: Callback; }
>{} : { [x: string]: undefined; }
}
}

View File

@ -50,7 +50,7 @@ var a: {
var b: { [x: number]: string; } = { foo: '' };
>b : { [x: number]: string; }
>x : number
>{ foo: '' } : { [x: number]: string; foo: string; }
>{ foo: '' } : { [x: number]: undefined; foo: string; }
>foo : string
function foo1(x: A);

View File

@ -64,7 +64,7 @@ var b: { [x: number]: Derived; } = { foo: <Derived>null };
>b : { [x: number]: Derived; }
>x : number
>Derived : Derived
>{ foo: <Derived>null } : { [x: number]: Derived; foo: Derived; }
>{ foo: <Derived>null } : { [x: number]: undefined; foo: Derived; }
>foo : Derived
><Derived>null : Derived
>Derived : Derived

View File

@ -50,7 +50,7 @@ var a: {
var b: { [x: number]: string; } = { foo: '' };
>b : { [x: number]: string; }
>x : number
>{ foo: '' } : { [x: number]: string; foo: string; }
>{ foo: '' } : { [x: number]: undefined; foo: string; }
>foo : string
function foo1(x: A);

View File

@ -37,7 +37,7 @@ module Bugs {
var tokens:IToken[]= [];
>tokens : IToken[]
>IToken : IToken
>[] : IToken[]
>[] : undefined[]
tokens.push({ startIndex: 1, type: '', bracket: 3 });
>tokens.push({ startIndex: 1, type: '', bracket: 3 }) : number

View File

@ -56,7 +56,7 @@ module Foo.Bar {
var greeters: Greeter[] = []; /* inline block comment */
>greeters : Greeter[]
>Greeter : Greeter
>[] : Greeter[]
>[] : undefined[]
greeters[0] = new Greeter(greeting);
>greeters[0] = new Greeter(greeting) : Greeter

View File

@ -4,7 +4,7 @@
var a : any[] = [1,2,"3"];
>a : any[]
>[1,2,"3"] : any[]
>[1,2,"3"] : Array<string | number>
function func1(stuff:any[]) { return stuff; }
@ -21,7 +21,7 @@ function func2(stuff1:string, stuff2:number, stuff3:number) {
return func1([stuff1, stuff2, stuff3]);
>func1([stuff1, stuff2, stuff3]) : any[]
>func1 : (stuff: any[]) => any[]
>[stuff1, stuff2, stuff3] : any[]
>[stuff1, stuff2, stuff3] : Array<string | number>
>stuff1 : string
>stuff2 : number
>stuff3 : number

View File

@ -8,7 +8,7 @@ class Bug {
private static func: Function[] = [
>func : Function[]
>Function : Function
>[ (that: Bug, name: string) => { that.foo(name); } ] : Function[]
>[ (that: Bug, name: string) => { that.foo(name); } ] : { (that: Bug, name: string): void; }[]
(that: Bug, name: string) => {
>(that: Bug, name: string) => { that.foo(name); } : (that: Bug, name: string) => void

View File

@ -1,12 +1,12 @@
tests/cases/compiler/tupleTypes.ts(1,9): error TS1122: A tuple type element list cannot be empty.
tests/cases/compiler/tupleTypes.ts(14,1): error TS2322: Type 'Array<string | number>' is not assignable to type '[number, string]':
Property '0' is missing in type 'Array<string | number>'.
tests/cases/compiler/tupleTypes.ts(14,1): error TS2322: Type 'undefined[]' is not assignable to type '[number, string]':
Property '0' is missing in type 'undefined[]'.
tests/cases/compiler/tupleTypes.ts(15,1): error TS2322: Type '[number]' is not assignable to type '[number, string]':
Property '1' is missing in type '[number]'.
tests/cases/compiler/tupleTypes.ts(17,1): error TS2322: Type '[string, number]' is not assignable to type '[number, string]':
Types of property '0' are incompatible:
Type 'string' is not assignable to type 'number'.
tests/cases/compiler/tupleTypes.ts(41,1): error TS2323: Type 'Array<string | number>' is not assignable to type '[number, string]'.
tests/cases/compiler/tupleTypes.ts(41,1): error TS2323: Type 'undefined[]' is not assignable to type '[number, string]'.
tests/cases/compiler/tupleTypes.ts(47,1): error TS2322: Type '[number, string]' is not assignable to type 'number[]':
Types of property 'pop' are incompatible:
Type '() => string | number' is not assignable to type '() => number':
@ -42,8 +42,8 @@ tests/cases/compiler/tupleTypes.ts(51,1): error TS2322: Type '[number, {}]' is n
t = []; // Error
~
!!! error TS2322: Type 'Array<string | number>' is not assignable to type '[number, string]':
!!! error TS2322: Property '0' is missing in type 'Array<string | number>'.
!!! error TS2322: Type 'undefined[]' is not assignable to type '[number, string]':
!!! error TS2322: Property '0' is missing in type 'undefined[]'.
t = [1]; // Error
~
!!! error TS2322: Type '[number]' is not assignable to type '[number, string]':
@ -79,7 +79,7 @@ tests/cases/compiler/tupleTypes.ts(51,1): error TS2322: Type '[number, {}]' is n
tt = [undefined, undefined];
tt = []; // Error
~~
!!! error TS2323: Type 'Array<string | number>' is not assignable to type '[number, string]'.
!!! error TS2323: Type 'undefined[]' is not assignable to type '[number, string]'.
var a: number[];
var a1: [number, string];

View File

@ -23,7 +23,7 @@ interface IMenuItem {
var menuData: IMenuItem[] = [
>menuData : IMenuItem[]
>IMenuItem : IMenuItem
>[ { "id": "ourLogo", "type": "image", "link": "", "icon": "modules/menu/logo.svg" }, { "id": "productName", "type": "default", "link": "", "text": "Product Name" }] : IMenuItem[]
>[ { "id": "ourLogo", "type": "image", "link": "", "icon": "modules/menu/logo.svg" }, { "id": "productName", "type": "default", "link": "", "text": "Product Name" }] : Array<{ "id": string; "type": string; "link": string; "icon": string; } | { "id": string; "type": string; "link": string; "text": string; }>
{
>{ "id": "ourLogo", "type": "image", "link": "", "icon": "modules/menu/logo.svg" } : { "id": string; "type": string; "link": string; "icon": string; }

View File

@ -15,5 +15,5 @@ var a = f([], 3); // should be number
>a : number
>f([], 3) : number
>f : <T>(arr: T[], elemnt: T) => T
>[] : number[]
>[] : undefined[]

View File

@ -104,7 +104,7 @@ var flat = _.reduceRight(list, (a, b) => a.concat(b), []);
>a : number[]
>concat : { <U extends number[]>(...items: U[]): number[]; (...items: number[]): number[]; }
>b : number[]
>[] : number[]
>[] : undefined[]
var even = _.find([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0);
>even : number
@ -200,7 +200,7 @@ _.invoke([[5, 1, 7], [3, 2, 1]], 'sort');
>_.invoke : { (list: any[], methodName: string, ...args: any[]): any[]; (list: Dictionary<any>, methodName: string, ...args: any[]): any[]; }
>_ : Underscore.Static
>invoke : { (list: any[], methodName: string, ...args: any[]): any[]; (list: Dictionary<any>, methodName: string, ...args: any[]): any[]; }
>[[5, 1, 7], [3, 2, 1]] : any[]
>[[5, 1, 7], [3, 2, 1]] : number[][]
>[5, 1, 7] : number[]
>[3, 2, 1] : number[]
@ -375,14 +375,14 @@ _.flatten([1, 2, 3, 4]);
>_.flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
>_ : Underscore.Static
>flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
>[1, 2, 3, 4] : any[]
>[1, 2, 3, 4] : number[]
_.flatten([1, [2]]);
>_.flatten([1, [2]]) : {}[]
>_.flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
>_ : Underscore.Static
>flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
>[1, [2]] : any[]
>[1, [2]] : Array<number | number[]>
>[2] : number[]
// typescript doesn't like the elements being different
@ -391,7 +391,7 @@ _.flatten([1, [2], [3, [[4]]]]);
>_.flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
>_ : Underscore.Static
>flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
>[1, [2], [3, [[4]]]] : any[]
>[1, [2], [3, [[4]]]] : Array<number | Array<number | number[][]>>
>[2] : number[]
>[3, [[4]]] : Array<number | number[][]>
>[[4]] : number[][]
@ -402,7 +402,7 @@ _.flatten([1, [2], [3, [[4]]]], true);
>_.flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
>_ : Underscore.Static
>flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
>[1, [2], [3, [[4]]]] : any[]
>[1, [2], [3, [[4]]]] : Array<number | Array<number | number[][]>>
>[2] : number[]
>[3, [[4]]] : Array<number | number[][]>
>[[4]] : number[][]
@ -463,17 +463,17 @@ _.object(['moe', 'larry', 'curly'], [30, 40, 50]);
>_ : Underscore.Static
>object : { (list: any[][]): any; (keys: string[], values: any[]): any; }
>['moe', 'larry', 'curly'] : string[]
>[30, 40, 50] : any[]
>[30, 40, 50] : number[]
_.object([['moe', 30], ['larry', 40], ['curly', 50]]);
>_.object([['moe', 30], ['larry', 40], ['curly', 50]]) : any
>_.object : { (list: any[][]): any; (keys: string[], values: any[]): any; }
>_ : Underscore.Static
>object : { (list: any[][]): any; (keys: string[], values: any[]): any; }
>[['moe', 30], ['larry', 40], ['curly', 50]] : any[][]
>['moe', 30] : any[]
>['larry', 40] : any[]
>['curly', 50] : any[]
>[['moe', 30], ['larry', 40], ['curly', 50]] : Array<string | number>[]
>['moe', 30] : Array<string | number>
>['larry', 40] : Array<string | number>
>['curly', 50] : Array<string | number>
_.indexOf([1, 2, 3], 2);
>_.indexOf([1, 2, 3], 2) : number

View File

@ -117,11 +117,11 @@ var a = ['a', 'b']
var a = <string[]>[];
>a : string[]
><string[]>[] : string[]
>[] : string[]
>[] : undefined[]
var a: string[] = [];
>a : string[]
>[] : string[]
>[] : undefined[]
var a = new Array<string>();
>a : string[]