exports[`test array.js 1`] = ` "var a = [\"...\"]; var b = a.map (function (x) { return 0; }); var c: string = b[0]; // error: number !~> string var array = []; function f() { array = array.map (function () { return \"...\"; }); var x:number = array[0]; // error: string !~> number } var Foo = require(\'./genericfoo\'); var foo = new Foo(); function g() { var foo1 = foo.map (function() { return \"...\"; }); var x:number = foo1.get(); // error: string !~> number foo = foo1; } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // error: number !~> string // error: string !~> number // error: string !~> number var a = [ \"...\" ]; var b = a.map(function(x) { return 0; }); var c: string = b[0]; var array = []; function f() { array = array.map(function() { return \"...\"; }); var x: number = array[0]; } var Foo = require(\"./genericfoo\"); var foo = new Foo(); function g() { var foo1 = foo.map(function() { return \"...\"; }); var x: number = foo1.get(); foo = foo1; } " `; exports[`test genericfoo.js 1`] = ` "class Foo { x:T; self():Foo { return this; } map(callbackfn: () => U): Foo { return new Foo(); } set(x:T): void { } get(): T { return this.x; } } module.exports = Foo; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class Foo { x: T; self(): Foo { return this; } map(callbackfn: () => U): Foo { return new Foo(); } set(x: T): void {} get(): T { return this.x; } } module.exports = Foo; " `;