//// [callSignatureWithoutReturnTypeAnnotationInference.ts] // Call signatures without a return type should infer one from the function body (if present) // Simple types function foo(x) { return 1; } var r = foo(1); function foo2(x) { return foo(x); } var r2 = foo2(1); function foo3() { return foo3(); } var r3 = foo3(); function foo4(x: T) { return x; } var r4 = foo4(1); function foo5(x) { if (true) { return 1; } else { return 2; } } var r5 = foo5(1); function foo6(x) { try { } catch (e) { return []; } finally { return []; } } var r6 = foo6(1); function foo7(x) { return typeof x; } var r7 = foo7(1); // object types function foo8(x: number) { return { x: x }; } var r8 = foo8(1); interface I { foo: string; } function foo9(x: number) { var i: I; return i; } var r9 = foo9(1); class C { foo: string; } function foo10(x: number) { var c: C; return c; } var r10 = foo10(1); module M { export var x = 1; export class C { foo: string } } function foo11() { return M; } var r11 = foo11(); // merged declarations interface I2 { x: number; } interface I2 { y: number; } function foo12() { var i2: I2; return i2; } var r12 = foo12(); function m1() { return 1; } module m1 { export var y = 2; } function foo13() { return m1; } var r13 = foo13(); class c1 { foo: string; constructor(x) { } } module c1 { export var x = 1; } function foo14() { return c1; } var r14 = foo14(); enum e1 { A } module e1 { export var y = 1; } function foo15() { return e1; } var r15 = foo15(); //// [callSignatureWithoutReturnTypeAnnotationInference.js] // Call signatures without a return type should infer one from the function body (if present) // Simple types function foo(x) { return 1; } var r = foo(1); function foo2(x) { return foo(x); } var r2 = foo2(1); function foo3() { return foo3(); } var r3 = foo3(); function foo4(x) { return x; } var r4 = foo4(1); function foo5(x) { if (true) { return 1; } else { return 2; } } var r5 = foo5(1); function foo6(x) { try { } catch (e) { return []; } finally { return []; } } var r6 = foo6(1); function foo7(x) { return typeof x; } var r7 = foo7(1); // object types function foo8(x) { return { x: x }; } var r8 = foo8(1); function foo9(x) { var i; return i; } var r9 = foo9(1); var C = (function () { function C() { } return C; })(); function foo10(x) { var c; return c; } var r10 = foo10(1); var M; (function (M) { M.x = 1; var C = (function () { function C() { } return C; })(); M.C = C; })(M || (M = {})); function foo11() { return M; } var r11 = foo11(); function foo12() { var i2; return i2; } var r12 = foo12(); function m1() { return 1; } var m1; (function (m1) { m1.y = 2; })(m1 || (m1 = {})); function foo13() { return m1; } var r13 = foo13(); var c1 = (function () { function c1(x) { } return c1; })(); var c1; (function (c1) { c1.x = 1; })(c1 || (c1 = {})); function foo14() { return c1; } var r14 = foo14(); var e1; (function (e1) { e1[e1["A"] = 0] = "A"; })(e1 || (e1 = {})); var e1; (function (e1) { e1.y = 1; })(e1 || (e1 = {})); function foo15() { return e1; } var r15 = foo15();