Temporary fix for import case in getTypeOfNode

This commit is contained in:
Jason Freeman
2014-08-18 19:56:03 -07:00
parent a08aa14a74
commit a8c2f82f3c
336 changed files with 3116 additions and 3109 deletions
+17 -10
View File
@@ -6773,19 +6773,19 @@ module ts {
(<QualifiedName>node.parent).right === node;
}
function getSymbolOfIdentifier(identifier: Identifier) {
if (isDeclarationOrFunctionExpressionOrCatchVariableName(identifier)) {
return getSymbolOfNode(identifier.parent);
function getSymbolOfEntityName(entityName: EntityName): Symbol {
if (isDeclarationOrFunctionExpressionOrCatchVariableName(entityName)) {
return getSymbolOfNode(entityName.parent);
}
if (identifier.parent.kind === SyntaxKind.ExportAssignment) {
return resolveEntityName(/*location*/ identifier.parent.parent, identifier,
if (entityName.parent.kind === SyntaxKind.ExportAssignment) {
return resolveEntityName(/*location*/ entityName.parent.parent, entityName,
/*all meanings*/ SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace | SymbolFlags.Import);
}
var entityName: Node = identifier;
while (isRightSideOfQualifiedNameOrPropertyAccess(entityName))
if (isRightSideOfQualifiedNameOrPropertyAccess(entityName)) {
entityName = entityName.parent;
}
if (isExpression(entityName)) {
if (entityName.kind === SyntaxKind.Identifier) {
@@ -6813,12 +6813,17 @@ module ts {
meaning |= SymbolFlags.Import;
return resolveEntityName(entityName, entityName, meaning);
}
// Do we want to return undefined here?
return undefined;
}
function getSymbolInfo(node: Node) {
switch (node.kind) {
case SyntaxKind.Identifier:
return getSymbolOfIdentifier(<Identifier>node);
case SyntaxKind.PropertyAccess:
case SyntaxKind.QualifiedName:
return getSymbolOfEntityName(<Identifier>node);
case SyntaxKind.ThisKeyword:
case SyntaxKind.SuperKeyword:
@@ -6894,10 +6899,12 @@ module ts {
}
else {
// It is an import statement
while (node.kind !== SyntaxKind.ImportDeclaration) {
if (isRightSideOfQualifiedNameOrPropertyAccess(node)) {
node = node.parent;
}
symbol = getSymbolOfNode(node);
// We include all declaration spaces for aliases. This is likely too inclusive, as the rules
// for resolving aliases are quite particular. Ideally this should reuse the logic in resolveAlias.
symbol = resolveEntityName(node, node, SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace | SymbolFlags.Import);
}
var declaredType = getDeclaredTypeOfSymbol(symbol);
return declaredType !== unknownType ? declaredType : getTypeOfSymbol(symbol);
@@ -50,7 +50,7 @@ module A {
>fromorigin2d : (p: Point) => Line<Point>
>p : Point
>Point : Point
>Line : Line
>Line : Line<TPoint>
>Point : Point
return null;
@@ -11,7 +11,7 @@ module A {
export var beez: Array<B>;
>beez : B[]
>Array : Array
>Array : T[]
>B : B
export var beez2 = new Array<B>();
@@ -12,6 +12,6 @@ module M {
import r = M.X;
>r : r
>M : M
>M : typeof M
>X : X
@@ -24,7 +24,7 @@ class C<T extends IHasVisualizationModel> {
}
class D extends C<IHasVisualizationModel> {
>D : D
>C : C
>C : C<T>
>IHasVisualizationModel : IHasVisualizationModel
x = moduleA;
@@ -5,7 +5,7 @@ import foo = require("./foo_0");
// None of the below should cause a runtime dependency on foo_0
import f = foo.M1;
>f : f
>foo : foo
>foo : typeof "tests/cases/conformance/externalModules/foo_0"
>M1 : M1
var i: f.I2;
@@ -167,8 +167,8 @@ class A2<T> { foo: T; }
declare function foo11(x: A2<string>): A2<string>;
>foo11 : { (x: A2<string>): A2<string>; (x: any): any; }
>x : A2<string>
>A2 : A2
>A2 : A2
>A2 : A2<T>
>A2 : A2<T>
declare function foo11(x: any): any;
>foo11 : { (x: A2<string>): A2<string>; (x: any): any; }
@@ -78,7 +78,7 @@ var classTypeArray = [C, C, C];
var classTypeArray: Array<typeof C>; // Should OK, not be a parse error
>classTypeArray : typeof C[]
>Array : Array
>Array : T[]
>C : typeof C
// Contextual type C with numeric index signature makes array literal of EveryType E of type BCT(E,C)[]
@@ -111,7 +111,7 @@ var context2 = [{ a: '', b: 0, c: '' }, { a: "", b: 3, c: 0 }];
var context2: Array<{}>; // Should be OK
>context2 : {}[]
>Array : Array
>Array : T[]
// Contextual type C with numeric index signature of type Base makes array literal of Derived have type Base[]
class Base { private p; }
@@ -9,15 +9,15 @@ class List<T> {
next: List<List<T>>;
>next : List<List<T>>
>List : List
>List : List
>List : List<T>
>List : List<T>
>T : T
}
class DerivedList<U> extends List<U> {
>DerivedList : DerivedList<U>
>U : U
>List : List
>List : List<T>
>U : U
foo: U;
@@ -37,22 +37,22 @@ class MyList<T> {
next: MyList<MyList<T>>;
>next : MyList<MyList<T>>
>MyList : MyList
>MyList : MyList
>MyList : MyList<T>
>MyList : MyList<T>
>T : T
}
var list: List<number>;
>list : List<number>
>List : List
>List : List<T>
var list2: List<string>;
>list2 : List<string>
>List : List
>List : List<T>
var myList: MyList<number>;
>myList : MyList<number>
>MyList : MyList
>MyList : MyList<T>
var xs = [list, myList]; // {}[]
>xs : List<number>[]
@@ -73,7 +73,7 @@ var zs = [list, null]; // List<number>[]
var myDerivedList: DerivedList<number>;
>myDerivedList : DerivedList<number>
>DerivedList : DerivedList
>DerivedList : DerivedList<U>
var as = [list, myDerivedList]; // List<number>[]
>as : List<number>[]
@@ -12,15 +12,15 @@ declare module WinJS {
>success : (value: T) => Promise<U>
>value : T
>T : T
>Promise : Promise
>Promise : Promise<T>
>U : U
>error : (error: any) => Promise<U>
>error : any
>Promise : Promise
>Promise : Promise<T>
>U : U
>progress : (progress: any) => void
>progress : any
>Promise : Promise
>Promise : Promise<T>
>U : U
}
}
@@ -66,14 +66,14 @@ declare module Data {
>indices : number[]
>options : any
>WinJS : WinJS
>Promise : Promise
>IListItem : IListItem
>Promise : Promise<T>
>IListItem : IListItem<T>
>T : T
}
export class VirtualList<T> implements IVirtualList<T> {
>VirtualList : VirtualList<T>
>T : T
>IVirtualList : IVirtualList
>IVirtualList : IVirtualList<T>
>T : T
//removeIndices: WinJS.Promise<IListItem<T>[]>;
@@ -82,8 +82,8 @@ declare module Data {
>indices : number[]
>options : any
>WinJS : WinJS
>Promise : Promise
>IListItem : IListItem
>Promise : Promise<T>
>IListItem : IListItem<T>
>T : T
}
}
@@ -106,23 +106,23 @@ var a11: (x: { foo: string }, y: { foo: string; bar: string }) => Base;
var a12: (x: Array<Base>, y: Array<Derived2>) => Array<Derived>;
>a12 : (x: Base[], y: Derived2[]) => Derived[]
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : Derived2[]
>Array : Array
>Array : T[]
>Derived2 : Derived2
>Array : Array
>Array : T[]
>Derived : Derived
var a13: (x: Array<Base>, y: Array<Derived>) => Array<Derived>;
>a13 : (x: Base[], y: Derived[]) => Derived[]
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : Derived[]
>Array : Array
>Array : T[]
>Derived : Derived
>Array : Array
>Array : T[]
>Derived : Derived
var a14: (x: { a: string; b: number }) => Object;
@@ -429,14 +429,14 @@ b11 = a11; // ok
var b12: <T extends Array<Base>>(x: Array<Base>, y: T) => Array<Derived>;
>b12 : <T extends Base[]>(x: Base[], y: T) => Derived[]
>T : T
>Array : Array
>Array : T[]
>Base : Base
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : T
>T : T
>Array : Array
>Array : T[]
>Derived : Derived
a12 = b12; // ok
@@ -452,10 +452,10 @@ b12 = a12; // ok
var b13: <T extends Array<Derived>>(x: Array<Base>, y: T) => T;
>b13 : <T extends Derived[]>(x: Base[], y: T) => T
>T : T
>Array : Array
>Array : T[]
>Derived : Derived
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : T
>T : T
@@ -106,23 +106,23 @@ var a11: new (x: { foo: string }, y: { foo: string; bar: string }) => Base;
var a12: new (x: Array<Base>, y: Array<Derived2>) => Array<Derived>;
>a12 : new (x: Base[], y: Derived2[]) => Derived[]
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : Derived2[]
>Array : Array
>Array : T[]
>Derived2 : Derived2
>Array : Array
>Array : T[]
>Derived : Derived
var a13: new (x: Array<Base>, y: Array<Derived>) => Array<Derived>;
>a13 : new (x: Base[], y: Derived[]) => Derived[]
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : Derived[]
>Array : Array
>Array : T[]
>Derived : Derived
>Array : Array
>Array : T[]
>Derived : Derived
var a14: new (x: { a: string; b: number }) => Object;
@@ -429,14 +429,14 @@ b11 = a11; // ok
var b12: new <T extends Array<Base>>(x: Array<Base>, y: T) => Array<Derived>;
>b12 : new <T extends Base[]>(x: Base[], y: T) => Derived[]
>T : T
>Array : Array
>Array : T[]
>Base : Base
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : T
>T : T
>Array : Array
>Array : T[]
>Derived : Derived
a12 = b12; // ok
@@ -452,10 +452,10 @@ b12 = a12; // ok
var b13: new <T extends Array<Derived>>(x: Array<Base>, y: T) => T;
>b13 : new <T extends Derived[]>(x: Base[], y: T) => T
>T : T
>Array : Array
>Array : T[]
>Derived : Derived
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : T
>T : T
@@ -25,7 +25,7 @@ var g: <T>(x: T) => <S>(y: S) => I<T, S>
>S : S
>y : S
>S : S
>I : I
>I : I<T, S>
>T : T
>S : S
@@ -11,7 +11,7 @@ module __test1__ {
>two : U
>U : U
>obj4 : interfaceWithPublicAndOptional<number, string>
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional<T, U>
>{ one: 1 } : { one: number; }
>one : number
@@ -11,7 +11,7 @@ module __test1__ {
>two : U
>U : U
>obj4 : interfaceWithPublicAndOptional<number, string>
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional<T, U>
>{ one: 1 } : { one: number; }
>one : number
@@ -11,7 +11,7 @@ module __test1__ {
>two : U
>U : U
>obj4 : interfaceWithPublicAndOptional<number, string>
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional<T, U>
>{ one: 1 } : { one: number; }
>one : number
@@ -11,7 +11,7 @@ module __test1__ {
>two : U
>U : U
>obj4 : interfaceWithPublicAndOptional<number, string>
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional<T, U>
>{ one: 1 } : { one: number; }
>one : number
@@ -11,7 +11,7 @@ module __test1__ {
>two : U
>U : U
>obj4 : interfaceWithPublicAndOptional<number, string>
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional<T, U>
>{ one: 1 } : { one: number; }
>one : number
@@ -28,7 +28,7 @@ module __test2__ {
>one : T
>T : T
>obj1 : interfaceOne<number>
>interfaceOne : interfaceOne
>interfaceOne : interfaceOne<T>
>{ one: 1 } : { one: number; }
>one : number
@@ -11,7 +11,7 @@ module __test1__ {
>two : U
>U : U
>obj4 : interfaceWithPublicAndOptional<number, string>
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional<T, U>
>{ one: 1 } : { one: number; }
>one : number
@@ -28,7 +28,7 @@ module __test2__ {
>one : T
>T : T
>obj3 : interfaceWithOptional<number>
>interfaceWithOptional : interfaceWithOptional
>interfaceWithOptional : interfaceWithOptional<T>
>{ } : {}
export var __val__obj3 = obj3;
@@ -11,7 +11,7 @@ module __test1__ {
>two : U
>U : U
>obj4 : interfaceWithPublicAndOptional<number, string>
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional<T, U>
>{ one: 1 } : { one: number; }
>one : number
@@ -31,7 +31,7 @@ module __test2__ {
>two : U
>U : U
>obj4 : interfaceWithPublicAndOptional<number, string>
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional<T, U>
>{ one: 1 } : { one: number; }
>one : number
@@ -11,7 +11,7 @@ module __test1__ {
>two : U
>U : U
>obj4 : interfaceWithPublicAndOptional<number, string>
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional<T, U>
>{ one: 1 } : { one: number; }
>one : number
@@ -11,7 +11,7 @@ module __test1__ {
>two : U
>U : U
>obj4 : interfaceWithPublicAndOptional<number, string>
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional
>interfaceWithPublicAndOptional : interfaceWithPublicAndOptional<T, U>
>{ one: 1 } : { one: number; }
>one : number
@@ -28,7 +28,7 @@ interface FooOf<TBase extends Base> extends Foo {
}
var x: FooOf<Derived> = null;
>x : FooOf<Derived>
>FooOf : FooOf
>FooOf : FooOf<TBase>
>Derived : Derived
var y: Derived = x[0];
@@ -1,7 +1,7 @@
=== tests/cases/compiler/baseTypeOrderChecking.ts ===
var someVariable: Class4<Class2>;
>someVariable : Class4<Class2>
>Class4 : Class4
>Class4 : Class4<T>
>Class2 : Class2
@@ -42,7 +42,7 @@ class Class3<T>
class Class4<T> extends Class3<T>
>Class4 : Class4<T>
>T : T
>Class3 : Class3
>Class3 : Class3<T>
>T : T
{
@@ -10,7 +10,7 @@ interface IPromise<T> {
>T : T
>errorCallback : (reason: any) => any
>reason : any
>IPromise : IPromise
>IPromise : IPromise<T>
}
function f() {
@@ -28,9 +28,9 @@ function f() {
function b(): IPromise<void> { return null; }
>b : () => IPromise<void>
>IPromise : IPromise
>IPromise : IPromise<T>
function d(): IPromise<any> { return null; }
>d : () => IPromise<any>
>IPromise : IPromise
>IPromise : IPromise<T>
@@ -12,7 +12,7 @@ interface I<T> {
}
var i: I<string>;
>i : I<string>
>I : I
>I : I<T>
var y = i(""); // y should be string
>y : string
@@ -115,7 +115,7 @@ interface I2<T> {
}
var i2: I2<number>;
>i2 : I2<number>
>I2 : I2
>I2 : I2<T>
var r7 = i2.f(1);
>r7 : number
@@ -110,23 +110,23 @@ interface A { // T
a12: (x: Array<Base>, y: Array<Derived2>) => Array<Derived>;
>a12 : (x: Base[], y: Derived2[]) => Derived[]
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : Derived2[]
>Array : Array
>Array : T[]
>Derived2 : Derived2
>Array : Array
>Array : T[]
>Derived : Derived
a13: (x: Array<Base>, y: Array<Derived>) => Array<Derived>;
>a13 : (x: Base[], y: Derived[]) => Derived[]
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : Derived[]
>Array : Array
>Array : T[]
>Derived : Derived
>Array : Array
>Array : T[]
>Derived : Derived
a14: (x: { a: string; b: number }) => Object;
@@ -332,23 +332,23 @@ interface I extends A {
a12: <T extends Array<Base>>(x: Array<Base>, y: T) => Array<Derived>; // ok, less specific parameter type
>a12 : <T extends Base[]>(x: Base[], y: T) => Derived[]
>T : T
>Array : Array
>Array : T[]
>Base : Base
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : T
>T : T
>Array : Array
>Array : T[]
>Derived : Derived
a13: <T extends Array<Derived>>(x: Array<Base>, y: T) => T; // ok, T = Array<Derived>, satisfies constraint, contextual signature instantiation succeeds
>a13 : <T extends Derived[]>(x: Base[], y: T) => T
>T : T
>Array : Array
>Array : T[]
>Derived : Derived
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : T
>T : T
@@ -111,23 +111,23 @@ interface A { // T
a12: (x: Array<Base>, y: Array<Derived2>) => Array<Derived>;
>a12 : (x: Base[], y: Derived2[]) => Derived[]
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : Derived2[]
>Array : Array
>Array : T[]
>Derived2 : Derived2
>Array : Array
>Array : T[]
>Derived : Derived
a13: (x: Array<Base>, y: Array<Derived>) => Array<Derived>;
>a13 : (x: Base[], y: Derived[]) => Derived[]
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : Derived[]
>Array : Array
>Array : T[]
>Derived : Derived
>Array : Array
>Array : T[]
>Derived : Derived
a14: (x: { a: string; b: number }) => Object;
@@ -280,23 +280,23 @@ interface I extends B {
a12: <T extends Array<Base>>(x: Array<Base>, y: T) => Array<Derived>; // ok, less specific parameter type
>a12 : <T extends Base[]>(x: Base[], y: T) => Derived[]
>T : T
>Array : Array
>Array : T[]
>Base : Base
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : T
>T : T
>Array : Array
>Array : T[]
>Derived : Derived
a13: <T extends Array<Derived>>(x: Array<Base>, y: T) => T; // ok, T = Array<Derived>, satisfies constraint, contextual signature instantiation succeeds
>a13 : <T extends Derived[]>(x: Base[], y: T) => T
>T : T
>Array : Array
>Array : T[]
>Derived : Derived
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : T
>T : T
@@ -24,25 +24,25 @@ interface Combinators {
>T : T
>U : U
>c : Collection<T>
>Collection : Collection
>Collection : Collection<T>
>T : T
>f : (x: T) => U
>x : T
>T : T
>U : U
>Collection : Collection
>Collection : Collection<T>
>U : U
map<T>(c: Collection<T>, f: (x: T) => any): Collection<any>;
>map : { <T, U>(c: Collection<T>, f: (x: T) => U): Collection<U>; <T>(c: Collection<T>, f: (x: T) => any): Collection<any>; }
>T : T
>c : Collection<T>
>Collection : Collection
>Collection : Collection<T>
>T : T
>f : (x: T) => any
>x : T
>T : T
>Collection : Collection
>Collection : Collection<T>
}
var _: Combinators;
@@ -51,7 +51,7 @@ var _: Combinators;
var c2: Collection<number>;
>c2 : Collection<number>
>Collection : Collection
>Collection : Collection<T>
var rf1 = (x: number) => { return x.toFixed() };
>rf1 : (x: number) => string
@@ -16,7 +16,7 @@ interface Sequence<T> {
>value : T
>T : T
>U : U
>Sequence : Sequence
>Sequence : Sequence<T>
>U : U
filter(iterator: (value: T) => boolean): Sequence<T>;
@@ -24,7 +24,7 @@ interface Sequence<T> {
>iterator : (value: T) => boolean
>value : T
>T : T
>Sequence : Sequence
>Sequence : Sequence<T>
>T : T
groupBy<K>(keySelector: (value: T) => K): Sequence<{ key: K; items: T[]; }>;
@@ -34,7 +34,7 @@ interface Sequence<T> {
>value : T
>T : T
>K : K
>Sequence : Sequence
>Sequence : Sequence<T>
>key : K
>K : K
>items : T[]
@@ -43,7 +43,7 @@ interface Sequence<T> {
var s: Sequence<string>;
>s : Sequence<string>
>Sequence : Sequence
>Sequence : Sequence<T>
var s2 = s.groupBy(s => s.length);
>s2 : Sequence<{ key: number; items: string[]; }>
@@ -73,7 +73,7 @@ class C2<T> {
class D2<T> extends C2<T> {
>D2 : D2<T>
>T : T
>C2 : C2
>C2 : C2<T>
>T : T
bar: string;
@@ -82,7 +82,7 @@ class D2<T> extends C2<T> {
var d2: D2<string>;
>d2 : D2<string>
>D2 : D2
>D2 : D2<T>
var r5 = d2.foo;
>r5 : string
@@ -15,12 +15,12 @@ module M2 {
import T = M1.I;
>T : T
>M1 : I
>M1 : M1
>I : I
class C implements T {
>C : C
>T : T
>T : I
foo() {}
>foo : () => void
@@ -2,7 +2,7 @@
class Foo<T extends Foo.Bar> {
>Foo : Foo<T>
>T : T
>Foo : Foo
>Foo : Foo<T>
>Bar : Bar
constructor() {
@@ -5,7 +5,7 @@ import foo = require("./foo_0");
// None of the below should cause a runtime dependency on foo_0
import f = foo.M1;
>f : f
>foo : foo
>foo : typeof "tests/cases/conformance/externalModules/foo_0"
>M1 : M1
var i: f.I2;
@@ -41,7 +41,7 @@ class Base {
ownerCollection: BaseCollection<Base>;
>ownerCollection : BaseCollection<Base>
>BaseCollection : BaseCollection
>BaseCollection : BaseCollection<T>
>Base : Base
}
@@ -50,7 +50,7 @@ class Thing {
public get Components(): ComponentCollection<any> { return null }
>Components : ComponentCollection<any>
>ComponentCollection : ComponentCollection
>ComponentCollection : ComponentCollection<T>
}
class ComponentCollection<T> {
@@ -90,7 +90,7 @@ class Foo {
}
public get prop2(): BaseCollection<Derived> {
>prop2 : BaseCollection<Derived>
>BaseCollection : BaseCollection
>BaseCollection : BaseCollection<T>
>Derived : Derived
return new BaseCollection<Derived>(Derived.createEmpty);
@@ -16,7 +16,7 @@ class GenericBase<T extends Constraint> {
}
class Derived extends GenericBase<TypeArg> {
>Derived : Derived
>GenericBase : GenericBase
>GenericBase : GenericBase<T>
>TypeArg : TypeArg
}
@@ -52,7 +52,7 @@ interface I<T extends Object> {
}
var i: I<{}>;
>i : I<{}>
>I : I
>I : I<T>
// {} constraint
function foo2<T extends {}>(x: T) { }
@@ -102,6 +102,6 @@ interface I2<T extends {}> {
}
var i2: I2<{}>;
>i2 : I2<{}>
>I2 : I2
>I2 : I2<T>
@@ -110,23 +110,23 @@ interface A { // T
a12: new (x: Array<Base>, y: Array<Derived2>) => Array<Derived>;
>a12 : new (x: Base[], y: Derived2[]) => Derived[]
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : Derived2[]
>Array : Array
>Array : T[]
>Derived2 : Derived2
>Array : Array
>Array : T[]
>Derived : Derived
a13: new (x: Array<Base>, y: Array<Derived>) => Array<Derived>;
>a13 : new (x: Base[], y: Derived[]) => Derived[]
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : Derived[]
>Array : Array
>Array : T[]
>Derived : Derived
>Array : Array
>Array : T[]
>Derived : Derived
a14: new (x: { a: string; b: number }) => Object;
@@ -332,23 +332,23 @@ interface I extends A {
a12: new <T extends Array<Base>>(x: Array<Base>, y: T) => Array<Derived>; // ok, less specific parameter type
>a12 : new <T extends Base[]>(x: Base[], y: T) => Derived[]
>T : T
>Array : Array
>Array : T[]
>Base : Base
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : T
>T : T
>Array : Array
>Array : T[]
>Derived : Derived
a13: new <T extends Array<Derived>>(x: Array<Base>, y: T) => T; // ok, T = Array<Derived>, satisfies constraint, contextual signature instantiation succeeds
>a13 : new <T extends Derived[]>(x: Base[], y: T) => T
>T : T
>Array : Array
>Array : T[]
>Derived : Derived
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : T
>T : T
@@ -111,23 +111,23 @@ interface A { // T
a12: new (x: Array<Base>, y: Array<Derived2>) => Array<Derived>;
>a12 : new (x: Base[], y: Derived2[]) => Derived[]
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : Derived2[]
>Array : Array
>Array : T[]
>Derived2 : Derived2
>Array : Array
>Array : T[]
>Derived : Derived
a13: new (x: Array<Base>, y: Array<Derived>) => Array<Derived>;
>a13 : new (x: Base[], y: Derived[]) => Derived[]
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : Derived[]
>Array : Array
>Array : T[]
>Derived : Derived
>Array : Array
>Array : T[]
>Derived : Derived
a14: new (x: { a: string; b: number }) => Object;
@@ -280,23 +280,23 @@ interface I extends B {
a12: new <T extends Array<Base>>(x: Array<Base>, y: T) => Array<Derived>; // ok, less specific parameter type
>a12 : new <T extends Base[]>(x: Base[], y: T) => Derived[]
>T : T
>Array : Array
>Array : T[]
>Base : Base
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : T
>T : T
>Array : Array
>Array : T[]
>Derived : Derived
a13: new <T extends Array<Derived>>(x: Array<Base>, y: T) => T; // ok, T = Array<Derived>, satisfies constraint, contextual signature instantiation succeeds
>a13 : new <T extends Derived[]>(x: Base[], y: T) => T
>T : T
>Array : Array
>Array : T[]
>Derived : Derived
>x : Base[]
>Array : Array
>Array : T[]
>Base : Base
>y : T
>T : T
@@ -76,14 +76,14 @@ interface I2<T> {
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
new (x: T, y: string): C2<T>; // error
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
new <T>(x: T, y: string): C2<T>;
@@ -91,7 +91,7 @@ interface I2<T> {
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
new <T>(x: T, y: string): C2<T>; // error
@@ -99,13 +99,13 @@ interface I2<T> {
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
}
var i2: I2<number>;
>i2 : I2<number>
>I2 : I2
>I2 : I2<T>
var r4 = new i2(1, '');
>r4 : C2<number>
@@ -139,7 +139,7 @@ var b: {
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
new <T>(x: T, y: string): C2<T>; // error
@@ -147,7 +147,7 @@ var b: {
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
}
@@ -76,14 +76,14 @@ interface I2<T> {
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
new (x: T, y: string): C2<T>;
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
new <T>(x: T, y?: string): C2<T>;
@@ -91,7 +91,7 @@ interface I2<T> {
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
new <T>(x: T, y: string): C2<T>;
@@ -99,14 +99,14 @@ interface I2<T> {
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
}
var i2: I2<number>;
>i2 : I2<number>
>I2 : I2
>I2 : I2<T>
var r4 = new i2(1, '');
>r4 : C2<number>
@@ -140,7 +140,7 @@ var b: {
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
new<T>(x: T, y: string): C2<T>;
@@ -148,7 +148,7 @@ var b: {
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
}
@@ -29,7 +29,7 @@ interface I {
new(x: number, y: string): C2<number>; // error
>x : number
>y : string
>C2 : C2
>C2 : C2<T>
}
interface I2<T> {
@@ -40,7 +40,7 @@ interface I2<T> {
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
new (x: T, y: string): C; // error
>x : T
@@ -53,7 +53,7 @@ interface I2<T> {
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
new <T>(x: T, y: string): C; // error
@@ -71,7 +71,7 @@ var a: {
new (x: number, y: string): C2<number>;
>x : number
>y : string
>C2 : C2
>C2 : C2<T>
new (x: number, y: string): C; // error
>x : number
@@ -87,7 +87,7 @@ var b: {
>x : T
>T : T
>y : string
>C2 : C2
>C2 : C2<T>
>T : T
new <T>(x: T, y: string): C; // error
@@ -61,7 +61,7 @@ module Generic {
>D : D<T, U>
>T : T
>U : U
>C : C
>C : C<T, U>
>T : T
>U : U
@@ -34,7 +34,7 @@ interface Q<T> {
}
var q1: Q<{ a: number; }>;
>q1 : Q<{ a: number; }>
>Q : Q
>Q : Q<T>
>a : number
var x = q1.each(x => c.log(x));
@@ -4,8 +4,8 @@ import a = require('declFileExportAssignmentOfGenericInterface_0');
export var x: a<a<string>>;
>x : Foo<Foo<string>>
>a : a
>a : a
>a : Foo<T>
>a : Foo<T>
x.a;
>x.a : string
@@ -6,11 +6,11 @@ class X<T> {
}
class C extends X<() => number> {
>C : C
>X : X
>X : X<T>
}
interface I extends X<() => number> {
>I : I
>X : X
>X : X<T>
}
@@ -13,7 +13,7 @@ class Base<T> { }
class Derived<T> extends Base<T> { }
>Derived : Derived<T>
>T : T
>Base : Base
>Base : Base<T>
>T : T
interface IBar<T> {
@@ -22,17 +22,17 @@ interface IBar<T> {
derived: Derived<T>;
>derived : Derived<T>
>Derived : Derived
>Derived : Derived<T>
>T : T
}
class Baz implements IBar<Baz> {
>Baz : Baz
>IBar : IBar
>IBar : IBar<T>
>Baz : Baz
derived: Derived<Baz>;
>derived : Derived<Baz>
>Derived : Derived
>Derived : Derived<T>
>Baz : Baz
}
@@ -14,7 +14,7 @@ export module C {
>T : T
>x : T
>T : T
>A : A
>A : A<T>
>B : B
export function F2<T>(x: T): C.A<C.B> { return null; }
@@ -23,7 +23,7 @@ export module C {
>x : T
>T : T
>C : C
>A : A
>A : A<T>
>C : C
>B : B
@@ -33,20 +33,20 @@ export module C {
>x : T
>T : T
>C : C
>A : A
>A : A<T>
>C : C
>B : B
export function F4<T extends A<B>>(x: T): Array<C.A<C.B>> { return null; }
>F4 : <T extends A<B>>(x: T) => A<B>[]
>T : T
>A : A
>A : A<T>
>B : B
>x : T
>T : T
>Array : Array
>Array : T[]
>C : C
>A : A
>A : A<T>
>C : C
>B : B
@@ -58,7 +58,7 @@ export module C {
export function F6<T extends A<B>>(x: T): T { return null; }
>F6 : <T extends A<B>>(x: T) => T
>T : T
>A : A
>A : A<T>
>B : B
>x : T
>T : T
@@ -78,7 +78,7 @@ export module C {
export var a: C.A<C.B>;
>a : A<B>
>C : C
>A : A
>A : A<T>
>C : C
>B : B
@@ -115,7 +115,7 @@ export var x = (new C.D<C.A<C.B>>(new C.A<C.B>())).val;
>C : typeof C
>D : typeof D
>C : C
>A : A
>A : A<T>
>C : C
>B : B
>new C.A<C.B>() : A<B>
@@ -130,7 +130,7 @@ export function f<T extends C.A<C.B>>() { }
>f : <T extends A<B>>() => void
>T : T
>C : C
>A : A
>A : A<T>
>C : C
>B : B
@@ -141,21 +141,21 @@ export var g = C.F5<C.A<C.B>>();
>C : typeof C
>F5 : <T>() => T
>C : C
>A : A
>A : A<T>
>C : C
>B : B
export class h extends C.A<C.B>{ }
>h : h
>C : C
>A : A
>A : A<T>
>C : C
>B : B
export interface i extends C.A<C.B> { }
>i : i
>C : C
>A : A
>A : A<T>
>C : C
>B : B
@@ -31,7 +31,7 @@ declare module templa.mvc {
>mvc : mvc
>IModel : IModel
>mvc : mvc
>IController : IController
>IController : IController<ModelType>
>ModelType : ModelType
}
}
@@ -48,7 +48,7 @@ declare module templa.mvc.composite {
getControllers(): mvc.IController<mvc.IModel>[];
>getControllers : () => IController<IModel>[]
>mvc : mvc
>IController : IController
>IController : IController<ModelType>
>mvc : mvc
>IModel : IModel
}
@@ -66,7 +66,7 @@ module templa.dom.mvc {
>IModel : IModel
>templa : templa
>mvc : mvc
>IController : IController
>IController : IController<ModelType>
>ModelType : ModelType
}
}
@@ -84,9 +84,9 @@ module templa.dom.mvc {
>IModel : IModel
>templa : templa
>mvc : mvc
>AbstractController : AbstractController
>AbstractController : AbstractController<ModelType>
>ModelType : ModelType
>IElementController : IElementController
>IElementController : IElementController<ModelType>
>ModelType : ModelType
constructor() {
@@ -112,14 +112,14 @@ module templa.dom.mvc.composite {
>templa : templa
>dom : dom
>mvc : mvc
>AbstractElementController : AbstractElementController
>AbstractElementController : AbstractElementController<ModelType>
>ModelType : ModelType
public _controllers: templa.mvc.IController<templa.mvc.IModel>[];
>_controllers : IController<IModel>[]
>templa : templa
>mvc : mvc
>IController : IController
>IController : IController<ModelType>
>templa : templa
>mvc : mvc
>IModel : IModel
@@ -12,7 +12,7 @@ module m {
}
import a = m.c;
>a : typeof c
>m : typeof c
>m : typeof m
>c : typeof c
import b = a;
@@ -15,7 +15,7 @@ declare module 'moo' {
export var p: List<x.Foo>;
>p : List<Foo>
>List : List
>List : List<T>
>x : x
>Foo : Foo
}
@@ -11,7 +11,7 @@ module m1 {
import x = m.c;
>x : typeof c
>m : c
>m : typeof m
>c : c
export var d = new x(); // emit the type as m.c
@@ -24,7 +24,7 @@ module m2 {
export import x = m.c;
>x : typeof c
>m : c
>m : typeof m
>c : c
export var d = new x(); // emit the type as x
@@ -1,5 +1,5 @@
=== tests/cases/compiler/declarationEmit_array-types-from-generic-array-usage.ts ===
interface A extends Array<string> { }
>A : A
>Array : Array
>Array : T[]
@@ -23,12 +23,12 @@ export module M {
export import a = M.f;
>a : () => void
>M : () => void
>M : typeof M
>f : () => void
export import b = M.C;
>b : typeof C
>M : C
>M : typeof M
>C : C
export import c = N;
@@ -61,8 +61,8 @@ export module M.P {
}
export import im = M.P.f;
>im : () => void
>M : () => void
>P : () => void
>M : typeof M
>P : typeof P
>f : () => void
export var a = M.a; // emitted incorrectly as typeof f
@@ -120,7 +120,7 @@ export module M.Q {
export interface b extends M.b { } // ok
>b : b
>M : M
>b : b
>b : C
export interface I extends M.c.I { } // ok
>I : I
@@ -9,7 +9,7 @@ declare module A.B
import ab = A.B;
>ab : typeof B
>A : typeof B
>A : typeof A
>B : typeof B
class D extends ab.C{ }
@@ -4,7 +4,7 @@ import a = require('A');
import A = a.A;
>A : typeof A
>a : A
>a : typeof "tests/cases/compiler/A"
>A : A
export = A;
@@ -63,13 +63,13 @@ module M
import X2 = A.B;
>X2 : typeof B
>A : typeof B
>A : typeof A
>B : typeof B
import X3 = A.B.C;
>X3 : typeof C
>A : typeof C
>B : typeof C
>A : typeof A
>B : typeof B
>C : typeof C
}
@@ -40,7 +40,7 @@ interface Array<T> {
}
var a: Array<string>;
>a : string[]
>Array : Array
>Array : T[]
var r5 = a.reduce((x, y) => x + y);
>r5 : string
@@ -9,5 +9,5 @@ module M { }
import a = M;
>a : any
>M : any
>M : M
@@ -160,7 +160,7 @@ interfaceType1Object1.bar1 = 2;
var interfaceType1Object2 = <interfaceType\u0031>{ bar1: 0 };
>interfaceType1Object2 : interfaceType1
><interfaceType\u0031>{ bar1: 0 } : interfaceType1
>interfaceType\u0031 : interfaceType\u0031
>interfaceType\u0031 : interfaceType1
>{ bar1: 0 } : { bar1: number; }
>bar1 : number
@@ -173,7 +173,7 @@ interfaceType1Object2.bar1 = 2;
var interfaceType2Object1 = <interfaceType2>{ bar2: 0 };
>interfaceType2Object1 : interfaceType\u0032
><interfaceType2>{ bar2: 0 } : interfaceType\u0032
>interfaceType2 : interfaceType2
>interfaceType2 : interfaceType\u0032
>{ bar2: 0 } : { bar2: number; }
>bar2 : number
@@ -24,13 +24,13 @@ class D<T>{
recurse: D<T>;
>recurse : D<T>
>D : D
>D : D<T>
>T : T
wrapped: D<D<T>>
>wrapped : D<D<T>>
>D : D
>D : D
>D : D<T>
>D : D<T>
>T : T
}
@@ -100,7 +100,7 @@ var aClass: C = new C();
var aGenericClass: D<string> = new D<string>();
>aGenericClass : D<string>
>D : D
>D : D<T>
>new D<string>() : D<string>
>D : typeof D
@@ -24,13 +24,13 @@ class D<T>{
recurse: D<T>;
>recurse : D<T>
>D : D
>D : D<T>
>T : T
wrapped: D<D<T>>
>wrapped : D<D<T>>
>D : D
>D : D
>D : D<T>
>D : D<T>
>T : T
}
@@ -5,7 +5,7 @@ import test = require('exportAssignedTypeAsTypeAnnotation_0');
var t2: test; // should not raise a 'container type' error
>t2 : x
>test : test
>test : x
=== tests/cases/compiler/exportAssignedTypeAsTypeAnnotation_0.ts ===
@@ -4,7 +4,7 @@ import I1 = require("exportAssignmentInterface_A");
var i: I1;
>i : A
>I1 : I1
>I1 : A
var n: number = i.p1;
>n : number
@@ -4,7 +4,7 @@ import foo = require("./foo_0");
var x: foo;
>x : Foo
>foo : foo
>foo : Foo
x("test");
>x("test") : void
@@ -5,7 +5,7 @@ import q = require("exportAssignmentOfGenericType1_0");
class M extends q<string> { }
>M : M
>q : q
>q : T<X>
var m: M;
>m : M
+1 -1
View File
@@ -5,7 +5,7 @@ import e = require('./exporter');
export function w(): e.w { // Should be OK
>w : () => Widget1
>e : e
>w : w
>w : Widget1
return new e.w();
>new e.w() : Widget1
@@ -92,7 +92,7 @@ module Z {
// 'y' should be a fundule here
export import y = X.Y;
>y : typeof Y
>X : typeof Y
>X : typeof X
>Y : typeof Y
}
@@ -147,7 +147,7 @@ module M {
export import D = K.L;
>D : typeof L
>K : L
>K : typeof K
>L : L
}
@@ -30,7 +30,7 @@ module M {
export import D = K.L;
>D : typeof L
>K : L
>K : typeof K
>L : L
}
var o: { name: string };
@@ -5,7 +5,7 @@ import e = require('./exporter');
export function w(): e.w { // Should be OK
>w : () => Widget1
>e : e
>w : w
>w : Widget1
return {name: 'value' };
>{name: 'value' } : { name: string; }
@@ -29,14 +29,14 @@ export declare class TPromise<V> {
>success : (value: V) => TPromise<U>
>value : V
>V : V
>TPromise : TPromise
>TPromise : TPromise<V>
>U : U
>error : (err: any) => TPromise<U>
>err : any
>TPromise : TPromise
>TPromise : TPromise<V>
>U : U
>progress : ProgressCallback
>ProgressCallback : ProgressCallback
>TPromise : TPromise
>TPromise : TPromise<V>
>U : U
}
@@ -7,23 +7,23 @@ interface Alpha<T> {
>takesArgOfT : (arg: T) => Alpha<T>
>arg : T
>T : T
>Alpha : Alpha
>Alpha : Alpha<T>
>T : T
makeBetaOfNumber(): Beta<number>;
>makeBetaOfNumber : () => Beta<number>
>Beta : Beta
>Beta : Beta<T>
}
interface Beta<T> extends Alpha<T> {
>Beta : Beta<T>
>T : T
>Alpha : Alpha
>Alpha : Alpha<T>
>T : T
}
var alpha: Alpha<number>;
>alpha : Alpha<number>
>Alpha : Alpha
>Alpha : Alpha<T>
var betaOfNumber = alpha.makeBetaOfNumber();
>betaOfNumber : Beta<number>
@@ -20,7 +20,7 @@ import ext2 = require('externalModuleAssignToVar_core_require2');
var y2: new() => ext2 = ext2;
>y2 : new () => C
>ext2 : ext2
>ext2 : C
>ext2 : typeof C
y2 = ext2; // ok
@@ -33,7 +33,7 @@ import ext3 = require('externalModuleAssignToVar_ext');
var y3: new () => ext3 = ext3;
>y3 : new () => D
>ext3 : ext3
>ext3 : D
>ext3 : typeof D
y3 = ext3; // ok
@@ -23,7 +23,7 @@ class NavigateAction {
f(editor: DiffEditor<any, any, any>) {
>f : (editor: DiffEditor<any, any, any>) => void
>editor : DiffEditor<any, any, any>
>DiffEditor : DiffEditor
>DiffEditor : DiffEditor<A, B, C>
}
}
@@ -24,13 +24,13 @@ class D<T>{
recurse: D<T>;
>recurse : D<T>
>D : D
>D : D<T>
>T : T
wrapped: D<D<T>>
>wrapped : D<D<T>>
>D : D
>D : D
>D : D<T>
>D : D<T>
>T : T
}
@@ -100,7 +100,7 @@ for(var aClass: C = new C();;){}
for(var aGenericClass: D<string> = new D<string>();;){}
>aGenericClass : D<string>
>D : D
>D : D<T>
>new D<string>() : D<string>
>D : typeof D
@@ -110,7 +110,7 @@ interface I2<T> {
}
var i2: I2<string>;
>i2 : I2<string>
>I2 : I2
>I2 : I2<T>
class C2<T> {
>C2 : C2<T>
@@ -91,7 +91,7 @@ interface I2<T> {
}
var i2: I2<string>;
>i2 : I2<string>
>I2 : I2
>I2 : I2<T>
class C2<T> {
>C2 : C2<T>
@@ -64,13 +64,13 @@ var f3: {
new<T>(x: string): D<T>;
>T : T
>x : string
>D : D
>D : D<T>
>T : T
new<T>(x: number): D<T>;
>T : T
>x : number
>D : D
>D : D<T>
>T : T
} = D;
@@ -14,7 +14,7 @@ class A<U>{
GetEnumerator: () => B<U>;
>GetEnumerator : () => B<U>
>B : B
>B : B<V>
>U : U
}
@@ -23,7 +23,7 @@ function Choice<T>(args: T[]): A<T>;
>T : T
>args : T[]
>T : T
>A : A
>A : A<U>
>T : T
function Choice<T>(...v_args: T[]): A<T>;
@@ -31,14 +31,14 @@ function Choice<T>(...v_args: T[]): A<T>;
>T : T
>v_args : T[]
>T : T
>A : A
>A : A<U>
>T : T
function Choice<T>(...v_args: any[]): A<T>{
>Choice : { <T>(args: T[]): A<T>; <T>(...v_args: T[]): A<T>; }
>T : T
>v_args : any[]
>A : A
>A : A<U>
>T : T
return new A<T>();
@@ -26,7 +26,7 @@ function promiseWithCancellation<T>(promise: Q.Promise<T>) {
>T : T
>promise : Promise<T>
>Q : Q
>Promise : Promise
>Promise : Promise<T>
>T : T
var deferred = Q.defer<T>(); // used to be an error
@@ -90,7 +90,7 @@ var x7: Base[] = [d1, d2];
var x8: Array<Base> = [d1, d2];
>x8 : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -125,7 +125,7 @@ var x11: (s: Base[]) => any = n => { var n: Base[]; return null; };
var x12: Genric<Base> = { func: n => { return [d1, d2]; } };
>x12 : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -202,7 +202,7 @@ class x19 { member: Base[] = [d1, d2] }
class x20 { member: Array<Base> = [d1, d2] }
>x20 : x20
>member : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -241,7 +241,7 @@ class x23 { member: (s: Base[]) => any = n => { var n: Base[]; return null; } }
class x24 { member: Genric<Base> = { func: n => { return [d1, d2]; } } }
>x24 : x24
>member : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -318,7 +318,7 @@ class x31 { private member: Base[] = [d1, d2] }
class x32 { private member: Array<Base> = [d1, d2] }
>x32 : x32
>member : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -357,7 +357,7 @@ class x35 { private member: (s: Base[]) => any = n => { var n: Base[]; return nu
class x36 { private member: Genric<Base> = { func: n => { return [d1, d2]; } } }
>x36 : x36
>member : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -434,7 +434,7 @@ class x43 { public member: Base[] = [d1, d2] }
class x44 { public member: Array<Base> = [d1, d2] }
>x44 : x44
>member : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -473,7 +473,7 @@ class x47 { public member: (s: Base[]) => any = n => { var n: Base[]; return nul
class x48 { public member: Genric<Base> = { func: n => { return [d1, d2]; } } }
>x48 : x48
>member : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -550,7 +550,7 @@ class x55 { static member: Base[] = [d1, d2] }
class x56 { static member: Array<Base> = [d1, d2] }
>x56 : x56
>member : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -589,7 +589,7 @@ class x59 { static member: (s: Base[]) => any = n => { var n: Base[]; return nul
class x60 { static member: Genric<Base> = { func: n => { return [d1, d2]; } } }
>x60 : x60
>member : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -666,7 +666,7 @@ class x67 { private static member: Base[] = [d1, d2] }
class x68 { private static member: Array<Base> = [d1, d2] }
>x68 : x68
>member : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -705,7 +705,7 @@ class x71 { private static member: (s: Base[]) => any = n => { var n: Base[]; re
class x72 { private static member: Genric<Base> = { func: n => { return [d1, d2]; } } }
>x72 : x72
>member : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -782,7 +782,7 @@ class x79 { public static member: Base[] = [d1, d2] }
class x80 { public static member: Array<Base> = [d1, d2] }
>x80 : x80
>member : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -821,7 +821,7 @@ class x83 { public static member: (s: Base[]) => any = n => { var n: Base[]; ret
class x84 { public static member: Genric<Base> = { func: n => { return [d1, d2]; } } }
>x84 : x84
>member : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -898,7 +898,7 @@ class x91 { constructor(parm: Base[] = [d1, d2]) { } }
class x92 { constructor(parm: Array<Base> = [d1, d2]) { } }
>x92 : x92
>parm : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -937,7 +937,7 @@ class x95 { constructor(parm: (s: Base[]) => any = n => { var n: Base[]; return
class x96 { constructor(parm: Genric<Base> = { func: n => { return [d1, d2]; } }) { } }
>x96 : x96
>parm : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -1014,7 +1014,7 @@ class x103 { constructor(public parm: Base[] = [d1, d2]) { } }
class x104 { constructor(public parm: Array<Base> = [d1, d2]) { } }
>x104 : x104
>parm : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -1053,7 +1053,7 @@ class x107 { constructor(public parm: (s: Base[]) => any = n => { var n: Base[];
class x108 { constructor(public parm: Genric<Base> = { func: n => { return [d1, d2]; } }) { } }
>x108 : x108
>parm : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -1130,7 +1130,7 @@ class x115 { constructor(private parm: Base[] = [d1, d2]) { } }
class x116 { constructor(private parm: Array<Base> = [d1, d2]) { } }
>x116 : x116
>parm : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -1169,7 +1169,7 @@ class x119 { constructor(private parm: (s: Base[]) => any = n => { var n: Base[]
class x120 { constructor(private parm: Genric<Base> = { func: n => { return [d1, d2]; } }) { } }
>x120 : x120
>parm : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -1246,7 +1246,7 @@ function x127(parm: Base[] = [d1, d2]) { }
function x128(parm: Array<Base> = [d1, d2]) { }
>x128 : (parm?: Base[]) => void
>parm : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -1285,7 +1285,7 @@ function x131(parm: (s: Base[]) => any = n => { var n: Base[]; return null; }) {
function x132(parm: Genric<Base> = { func: n => { return [d1, d2]; } }) { }
>x132 : (parm?: Genric<Base>) => void
>parm : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -1354,7 +1354,7 @@ function x139(): Base[] { return [d1, d2]; }
function x140(): Array<Base> { return [d1, d2]; }
>x140 : () => Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -1389,7 +1389,7 @@ function x143(): (s: Base[]) => any { return n => { var n: Base[]; return null;
function x144(): Genric<Base> { return { func: n => { return [d1, d2]; } }; }
>x144 : () => Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -1487,7 +1487,7 @@ function x151(): Base[] { return [d1, d2]; return [d1, d2]; }
function x152(): Array<Base> { return [d1, d2]; return [d1, d2]; }
>x152 : () => Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -1537,7 +1537,7 @@ function x155(): (s: Base[]) => any { return n => { var n: Base[]; return null;
function x156(): Genric<Base> { return { func: n => { return [d1, d2]; } }; return { func: n => { return [d1, d2]; } }; }
>x156 : () => Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -1620,7 +1620,7 @@ var x163: () => Base[] = () => { return [d1, d2]; };
var x164: () => Array<Base> = () => { return [d1, d2]; };
>x164 : () => Base[]
>Array : Array
>Array : T[]
>Base : Base
>() => { return [d1, d2]; } : () => Base[]
>[d1, d2] : Base[]
@@ -1659,7 +1659,7 @@ var x167: () => (s: Base[]) => any = () => { return n => { var n: Base[]; return
var x168: () => Genric<Base> = () => { return { func: n => { return [d1, d2]; } }; };
>x168 : () => Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>() => { return { func: n => { return [d1, d2]; } }; } : () => { func: (n: Base[]) => {}[]; }
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
@@ -1736,7 +1736,7 @@ var x175: () => Base[] = function() { return [d1, d2]; };
var x176: () => Array<Base> = function() { return [d1, d2]; };
>x176 : () => Base[]
>Array : Array
>Array : T[]
>Base : Base
>function() { return [d1, d2]; } : () => Base[]
>[d1, d2] : Base[]
@@ -1775,7 +1775,7 @@ var x179: () => (s: Base[]) => any = function() { return n => { var n: Base[]; r
var x180: () => Genric<Base> = function() { return { func: n => { return [d1, d2]; } }; };
>x180 : () => Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>function() { return { func: n => { return [d1, d2]; } }; } : () => { func: (n: Base[]) => {}[]; }
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
@@ -1853,7 +1853,7 @@ module x187 { var t: Base[] = [d1, d2]; }
module x188 { var t: Array<Base> = [d1, d2]; }
>x188 : typeof x188
>t : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -1892,7 +1892,7 @@ module x191 { var t: (s: Base[]) => any = n => { var n: Base[]; return null; };
module x192 { var t: Genric<Base> = { func: n => { return [d1, d2]; } }; }
>x192 : typeof x192
>t : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -1969,7 +1969,7 @@ module x199 { export var t: Base[] = [d1, d2]; }
module x200 { export var t: Array<Base> = [d1, d2]; }
>x200 : typeof x200
>t : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -2008,7 +2008,7 @@ module x203 { export var t: (s: Base[]) => any = n => { var n: Base[]; return nu
module x204 { export var t: Genric<Base> = { func: n => { return [d1, d2]; } }; }
>x204 : typeof x204
>t : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -2067,7 +2067,7 @@ var x211 = <Base[]>[d1, d2];
var x212 = <Array<Base>>[d1, d2];
>x212 : Base[]
><Array<Base>>[d1, d2] : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] : Base[]
>d1 : Derived1
@@ -2096,7 +2096,7 @@ var x214 = <{n: Base[]; } >{ n: [d1, d2] };
var x216 = <Genric<Base>>{ func: n => { return [d1, d2]; } };
>x216 : Genric<Base>
><Genric<Base>>{ func: n => { return [d1, d2]; } } : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>func : (n: Base[]) => {}[]
@@ -2172,7 +2172,7 @@ var x222 = (<Array<Base>>undefined) || [d1, d2];
>(<Array<Base>>undefined) || [d1, d2] : Base[]
>(<Array<Base>>undefined) : Base[]
><Array<Base>>undefined : Base[]
>Array : Array
>Array : T[]
>Base : Base
>undefined : undefined
>[d1, d2] : Base[]
@@ -2278,7 +2278,7 @@ var x231: Base[]; x231 = [d1, d2];
var x232: Array<Base>; x232 = [d1, d2];
>x232 : Base[]
>Array : Array
>Array : T[]
>Base : Base
>x232 = [d1, d2] : Base[]
>x232 : Base[]
@@ -2321,7 +2321,7 @@ var x235: (s: Base[]) => any; x235 = n => { var n: Base[]; return null; };
var x236: Genric<Base>; x236 = { func: n => { return [d1, d2]; } };
>x236 : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>x236 = { func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
>x236 : Genric<Base>
@@ -2414,7 +2414,7 @@ var x243: { n: Base[]; } = { n: [d1, d2] };
var x244: { n: Array<Base>; } = { n: [d1, d2] };
>x244 : { n: Base[]; }
>n : Base[]
>Array : Array
>Array : T[]
>Base : Base
>{ n: [d1, d2] } : { n: Base[]; }
>n : Base[]
@@ -2461,7 +2461,7 @@ var x247: { n: (s: Base[]) => any; } = { n: n => { var n: Base[]; return null; }
var x248: { n: Genric<Base>; } = { n: { func: n => { return [d1, d2]; } } };
>x248 : { n: Genric<Base>; }
>n : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>{ n: { func: n => { return [d1, d2]; } } } : { n: { func: (n: Base[]) => {}[]; }; }
>n : { func: (n: Base[]) => {}[]; }
@@ -2511,7 +2511,7 @@ var x255: Base[][] = [[d1, d2]];
var x256: Array<Base>[] = [[d1, d2]];
>x256 : Base[][]
>Array : Array
>Array : T[]
>Base : Base
>[[d1, d2]] : Base[][]
>[d1, d2] : Base[]
@@ -2540,7 +2540,7 @@ var x258: {n: Base[]; } [] = [{ n: [d1, d2] }];
var x260: Genric<Base>[] = [{ func: n => { return [d1, d2]; } }];
>x260 : Genric<Base>[]
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>[{ func: n => { return [d1, d2]; } }] : Genric<Base>[]
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
@@ -2604,7 +2604,7 @@ var x265: Base[] = [d1, d2] || undefined;
var x266: Array<Base> = [d1, d2] || undefined;
>x266 : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] || undefined : Base[]
>[d1, d2] : Base[]
@@ -2687,7 +2687,7 @@ var x273: Base[] = undefined || [d1, d2];
var x274: Array<Base> = undefined || [d1, d2];
>x274 : Base[]
>Array : Array
>Array : T[]
>Base : Base
>undefined || [d1, d2] : Base[]
>undefined : undefined
@@ -2786,7 +2786,7 @@ var x281: Base[] = [d1, d2] || [d1, d2];
var x282: Array<Base> = [d1, d2] || [d1, d2];
>x282 : Base[]
>Array : Array
>Array : T[]
>Base : Base
>[d1, d2] || [d1, d2] : Base[]
>[d1, d2] : Base[]
@@ -2919,7 +2919,7 @@ var x291: Base[] = true ? [d1, d2] : [d1, d2];
var x292: Array<Base> = true ? [d1, d2] : [d1, d2];
>x292 : Base[]
>Array : Array
>Array : T[]
>Base : Base
>true ? [d1, d2] : [d1, d2] : Base[]
>[d1, d2] : Base[]
@@ -2973,7 +2973,7 @@ var x295: (s: Base[]) => any = true ? n => { var n: Base[]; return null; } : n =
var x296: Genric<Base> = true ? { func: n => { return [d1, d2]; } } : { func: n => { return [d1, d2]; } };
>x296 : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>true ? { func: n => { return [d1, d2]; } } : { func: n => { return [d1, d2]; } } : Genric<Base>
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
@@ -3064,7 +3064,7 @@ var x303: Base[] = true ? undefined : [d1, d2];
var x304: Array<Base> = true ? undefined : [d1, d2];
>x304 : Base[]
>Array : Array
>Array : T[]
>Base : Base
>true ? undefined : [d1, d2] : Base[]
>undefined : undefined
@@ -3107,7 +3107,7 @@ var x307: (s: Base[]) => any = true ? undefined : n => { var n: Base[]; return n
var x308: Genric<Base> = true ? undefined : { func: n => { return [d1, d2]; } };
>x308 : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>true ? undefined : { func: n => { return [d1, d2]; } } : Genric<Base>
>undefined : undefined
@@ -3192,7 +3192,7 @@ var x315: Base[] = true ? [d1, d2] : undefined;
var x316: Array<Base> = true ? [d1, d2] : undefined;
>x316 : Base[]
>Array : Array
>Array : T[]
>Base : Base
>true ? [d1, d2] : undefined : Base[]
>[d1, d2] : Base[]
@@ -3235,7 +3235,7 @@ var x319: (s: Base[]) => any = true ? n => { var n: Base[]; return null; } : und
var x320: Genric<Base> = true ? { func: n => { return [d1, d2]; } } : undefined;
>x320 : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>true ? { func: n => { return [d1, d2]; } } : undefined : Genric<Base>
>{ func: n => { return [d1, d2]; } } : { func: (n: Base[]) => {}[]; }
@@ -3328,7 +3328,7 @@ function x327(n: Base[]) { }; x327([d1, d2]);
function x328(n: Array<Base>) { }; x328([d1, d2]);
>x328 : (n: Base[]) => void
>n : Base[]
>Array : Array
>Array : T[]
>Base : Base
>x328([d1, d2]) : void
>x328 : (n: Base[]) => void
@@ -3375,7 +3375,7 @@ function x331(n: (s: Base[]) => any) { }; x331(n => { var n: Base[]; return null
function x332(n: Genric<Base>) { }; x332({ func: n => { return [d1, d2]; } });
>x332 : (n: Genric<Base>) => void
>n : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>x332({ func: n => { return [d1, d2]; } }) : void
>x332 : (n: Genric<Base>) => void
@@ -3483,7 +3483,7 @@ var x340 = (n: Array<Base>) => n; x340([d1, d2]);
>x340 : (n: Base[]) => Base[]
>(n: Array<Base>) => n : (n: Base[]) => Base[]
>n : Base[]
>Array : Array
>Array : T[]
>Base : Base
>n : Base[]
>x340([d1, d2]) : Base[]
@@ -3538,7 +3538,7 @@ var x344 = (n: Genric<Base>) => n; x344({ func: n => { return [d1, d2]; } });
>x344 : (n: Genric<Base>) => Genric<Base>
>(n: Genric<Base>) => n : (n: Genric<Base>) => Genric<Base>
>n : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>n : Genric<Base>
>x344({ func: n => { return [d1, d2]; } }) : Genric<Base>
@@ -3640,7 +3640,7 @@ var x352 = function(n: Array<Base>) { }; x352([d1, d2]);
>x352 : (n: Base[]) => void
>function(n: Array<Base>) { } : (n: Base[]) => void
>n : Base[]
>Array : Array
>Array : T[]
>Base : Base
>x352([d1, d2]) : void
>x352 : (n: Base[]) => void
@@ -3691,7 +3691,7 @@ var x356 = function(n: Genric<Base>) { }; x356({ func: n => { return [d1, d2]; }
>x356 : (n: Genric<Base>) => void
>function(n: Genric<Base>) { } : (n: Genric<Base>) => void
>n : Genric<Base>
>Genric : Genric
>Genric : Genric<T>
>Base : Base
>x356({ func: n => { return [d1, d2]; } }) : void
>x356 : (n: Genric<Base>) => void
@@ -16,7 +16,7 @@ interface callable2<T> {
}
var c2: callable2<number>;
>c2 : callable2<number>
>callable2 : callable2
>callable2 : callable2<T>
c2<string>(1);
>c2<string>(1) : string
@@ -24,7 +24,7 @@ module Underscore {
>list : T[]
>T : T
>iterator : Iterator<T, boolean>
>Iterator : Iterator
>Iterator : Iterator<T, U>
>T : T
>context : any
@@ -14,7 +14,7 @@ class BaseClass<T> {
class SubClass extends BaseClass<number> {
>SubClass : SubClass
>BaseClass : BaseClass
>BaseClass : BaseClass<T>
public Error(): void {
>Error : () => void
@@ -24,7 +24,7 @@ class BaseCollection2<TItem extends CollectionItem2> {
class DataView2 extends BaseCollection2<CollectionItem2> {
>DataView2 : DataView2
>BaseCollection2 : BaseCollection2
>BaseCollection2 : BaseCollection2<TItem>
>CollectionItem2 : CollectionItem2
fillItems(item: CollectionItem2) {
@@ -306,7 +306,7 @@ interface I<T, U> {
var i: I<string, number>;
>i : I<string, number>
>I : I
>I : I<T, U>
var r4 = i.foo('', 1); // string
>r4 : string
@@ -406,7 +406,7 @@ interface I<T extends Base, U extends Derived> {
var i: I<Base, Derived>;
>i : I<Base, Derived>
>I : I
>I : I<T, U>
>Base : Base
>Derived : Derived
@@ -39,7 +39,7 @@ var i: I;
var i2: I2<string>;
>i2 : I2<string>
>I2 : I2
>I2 : I2<T>
var a: {
>a : new <T>(x: T) => T
@@ -26,10 +26,10 @@ function foo<T>(t: X<T>, t2: X<T>) {
>foo : <T>(t: X<T>, t2: X<T>) => T
>T : T
>t : X<T>
>X : X
>X : X<T>
>T : T
>t2 : X<T>
>X : X
>X : X<T>
>T : T
var x: T;
@@ -117,7 +117,7 @@ interface I<T, U> {
var i: I<Base, Derived>;
>i : I<Base, Derived>
>I : I
>I : I<T, U>
>Base : Base
>Derived : Derived
@@ -33,10 +33,10 @@ function foo<T extends { x: string }>(t: X<T>, t2: X<T>) {
>T : T
>x : string
>t : X<T>
>X : X
>X : X<T>
>T : T
>t2 : X<T>
>X : X
>X : X<T>
>T : T
var x: T;
@@ -78,10 +78,10 @@ function foo2<T extends C>(t: X<T>, t2: X<T>) {
>T : T
>C : C
>t : X<T>
>X : X
>X : X<T>
>T : T
>t2 : X<T>
>X : X
>X : X<T>
>T : T
var x: T;
@@ -71,7 +71,7 @@ function f2<T extends Base>(x: I<T>) {
>T : T
>Base : Base
>x : I<T>
>I : I
>I : I<T>
>T : T
var r: T;
@@ -83,7 +83,7 @@ function f2<T extends Base>(x: I<T>) {
}
var i: I<Derived>;
>i : I<Derived>
>I : I
>I : I<T>
>Derived : Derived
var r3 = f2(i);
@@ -18,7 +18,7 @@ module M {
public value: I<T>;
>value : I<T>
>I : I
>I : I<T>
>T : T
}
export class A<T> {
@@ -31,8 +31,8 @@ module M {
export class B<T> extends C1<A<T>> { }
>B : B<T>
>T : T
>C1 : C1
>A : A
>C1 : C1<T>
>A : A<T>
>T : T
export class D<T> {
@@ -42,20 +42,20 @@ module M {
_subscribe(viewModel: B<T>): void {
>_subscribe : (viewModel: B<T>) => void
>viewModel : B<T>
>B : B
>B : B<T>
>T : T
var f = (newValue: A<T>) => { };
>f : (newValue: A<T>) => void
>(newValue: A<T>) => { } : (newValue: A<T>) => void
>newValue : A<T>
>A : A
>A : A<T>
>T : T
var v: I<A<T>> = viewModel.value;
>v : I<A<T>>
>I : I
>A : A
>I : I<T>
>A : A<T>
>T : T
>viewModel.value : I<A<T>>
>viewModel : B<T>
@@ -76,7 +76,7 @@ module M {
>subscribe : (callback: (newValue: A<T>) => void) => any
>(newValue: A<T>) => { } : (newValue: A<T>) => void
>newValue : A<T>
>A : A
>A : A<T>
>T : T
}
}
@@ -13,7 +13,7 @@ module bar {
>Foo : Foo<T>
>T : T
>foo : foo
>IFoo : IFoo
>IFoo : IFoo<T>
>T : T
}
@@ -1,7 +1,7 @@
=== tests/cases/compiler/genericClassInheritsConstructorFromNonGenericClass.ts ===
class A extends B<string> { }
>A : A
>B : B
>B : B<U>
class B<U> extends C { }
>B : B<U>
@@ -18,7 +18,7 @@ interface KnockoutObservableBase<T> {
interface KnockoutObservable<T> extends KnockoutObservableBase<T> {
>KnockoutObservable : KnockoutObservable<T>
>T : T
>KnockoutObservableBase : KnockoutObservableBase
>KnockoutObservableBase : KnockoutObservableBase<T>
>T : T
equalityComparer(a: T, b: T): boolean;
@@ -38,7 +38,7 @@ interface KnockoutObservable<T> extends KnockoutObservableBase<T> {
interface KnockoutObservableArray<T> extends KnockoutObservable<T[]> {
>KnockoutObservableArray : KnockoutObservableArray<T>
>T : T
>KnockoutObservable : KnockoutObservable
>KnockoutObservable : KnockoutObservable<T>
>T : T
indexOf(searchElement: T, fromIndex?: number): number;
@@ -126,13 +126,13 @@ interface KnockoutObservableArrayStatic {
fn: KnockoutObservableArray<any>;
>fn : KnockoutObservableArray<any>
>KnockoutObservableArray : KnockoutObservableArray
>KnockoutObservableArray : KnockoutObservableArray<T>
<T>(value?: T[]): KnockoutObservableArray<T>;
>T : T
>value : T[]
>T : T
>KnockoutObservableArray : KnockoutObservableArray
>KnockoutObservableArray : KnockoutObservableArray<T>
>T : T
}
@@ -158,15 +158,15 @@ module Portal.Controls.Validators {
public message: KnockoutObservable<string>;
>message : KnockoutObservable<string>
>KnockoutObservable : KnockoutObservable
>KnockoutObservable : KnockoutObservable<T>
public validationState: KnockoutObservable<number>;
>validationState : KnockoutObservable<number>
>KnockoutObservable : KnockoutObservable
>KnockoutObservable : KnockoutObservable<T>
public validate: KnockoutObservable<TValue>;
>validate : KnockoutObservable<TValue>
>KnockoutObservable : KnockoutObservable
>KnockoutObservable : KnockoutObservable<T>
>TValue : TValue
constructor(message?: string) { }
@@ -194,7 +194,7 @@ module PortalFx.ViewModels.Controls.Validators {
>Portal : Portal
>Controls : Controls
>Validators : Validators
>Validator : Validator
>Validator : Validator<TValue>
>TValue : TValue
constructor(message?: string) {
@@ -214,12 +214,12 @@ interface Contract<TValue> {
validators: KnockoutObservableArray<PortalFx.ViewModels.Controls.Validators.Validator<TValue>>;
>validators : KnockoutObservableArray<Validator<TValue>>
>KnockoutObservableArray : KnockoutObservableArray
>KnockoutObservableArray : KnockoutObservableArray<T>
>PortalFx : PortalFx
>ViewModels : ViewModels
>Controls : Controls
>Validators : Validators
>Validator : Validator
>Validator : Validator<TValue>
>TValue : TValue
}
@@ -227,17 +227,17 @@ interface Contract<TValue> {
class ViewModel<TValue> implements Contract<TValue> {
>ViewModel : ViewModel<TValue>
>TValue : TValue
>Contract : Contract
>Contract : Contract<TValue>
>TValue : TValue
public validators: KnockoutObservableArray<PortalFx.ViewModels.Controls.Validators.Validator<TValue>> = ko.observableArray<PortalFx.ViewModels.Controls.Validators.Validator<TValue>>();
>validators : KnockoutObservableArray<Validator<TValue>>
>KnockoutObservableArray : KnockoutObservableArray
>KnockoutObservableArray : KnockoutObservableArray<T>
>PortalFx : PortalFx
>ViewModels : ViewModels
>Controls : Controls
>Validators : Validators
>Validator : Validator
>Validator : Validator<TValue>
>TValue : TValue
>ko.observableArray<PortalFx.ViewModels.Controls.Validators.Validator<TValue>>() : KnockoutObservableArray<Validator<TValue>>
>ko.observableArray : KnockoutObservableArrayStatic
@@ -247,7 +247,7 @@ class ViewModel<TValue> implements Contract<TValue> {
>ViewModels : ViewModels
>Controls : Controls
>Validators : Validators
>Validator : Validator
>Validator : Validator<TValue>
>TValue : TValue
}
@@ -11,7 +11,7 @@ class Foo<T> {
class Bar<T> extends Foo<T> {
>Bar : Bar<T>
>T : T
>Foo : Foo
>Foo : Foo<T>
>T : T
static getFoo() {
@@ -129,7 +129,7 @@ module WithCandidates {
var c: C<number>;
>c : C<number>
>C : C
>C : C<T>
var r4 = c.foo2(1, function <Z>(a: Z) { return '' }); // string, contextual signature instantiation is applied to generic functions
>r4 : string
@@ -187,7 +187,7 @@ module WithCandidates {
var c2: C2<number, string>;
>c2 : C2<number, string>
>C2 : C2
>C2 : C2<T, U>
var r7 = c2.foo3(1, <Z>(a: Z) => '', ''); // string
>r7 : string
@@ -235,7 +235,7 @@ module WithCandidates {
}
var c3: C3<number, string>;
>c3 : C3<number, string>
>C3 : C3
>C3 : C3<T, U>
function other<T, U>(t: T, u: U) {
>other : <T, U>(t: T, u: U) => void
@@ -41,10 +41,10 @@ module Class {
>T : T
>x : string
>t : X<T>
>X : X
>X : X<T>
>T : T
>t2 : X<T>
>X : X
>X : X<T>
>T : T
var x: T;
@@ -70,7 +70,7 @@ module Class {
var g: G<{ x: string; y: string }>;
>g : G<{ x: string; y: string; }>
>G : G
>G : G<T>
>x : string
>y : string
@@ -102,10 +102,10 @@ module Class {
>T : T
>C : C
>t : X<T>
>X : X
>X : X<T>
>T : T
>t2 : X<T>
>X : X
>X : X<T>
>T : T
var x: T;
@@ -118,7 +118,7 @@ module Class {
}
var g2: G2<D>;
>g2 : G2<D>
>G2 : G2
>G2 : G2<T>
>D : D
var r = g2.foo2(c1, d1);
@@ -153,10 +153,10 @@ module Interface {
>T : T
>x : string
>t : X<T>
>X : X
>X : X<T>
>T : T
>t2 : X<T>
>X : X
>X : X<T>
>T : T
>T : T
}
@@ -175,7 +175,7 @@ module Interface {
var g: G<{ x: string; y: string }>;
>g : G<{ x: string; y: string; }>
>G : G
>G : G<T>
>x : string
>y : string
@@ -207,17 +207,17 @@ module Interface {
>T : T
>C : C
>t : X<T>
>X : X
>X : X<T>
>T : T
>t2 : X<T>
>X : X
>X : X<T>
>T : T
>T : T
}
var g2: G2<D>;
>g2 : G2<D>
>G2 : G2
>G2 : G2<T>
>D : D
var r = g2.foo2(c1, d1);

Some files were not shown because too many files have changed in this diff Show More