|
| 1 | +//// [parenthesizedContexualTyping1.ts] |
| 2 | + |
| 3 | +function fun<T>(g: (x: T) => T, x: T): T; |
| 4 | +function fun<T>(g: (x: T) => T, h: (y: T) => T, x: T): T; |
| 5 | +function fun<T>(g: (x: T) => T, x: T): T { |
| 6 | + return g(x); |
| 7 | +} |
| 8 | + |
| 9 | +var a = fun(x => x, 10); |
| 10 | +var b = fun((x => x), 10); |
| 11 | +var c = fun(((x => x)), 10); |
| 12 | +var d = fun((((x => x))), 10); |
| 13 | + |
| 14 | +var e = fun(x => x, x => x, 10); |
| 15 | +var f = fun((x => x), (x => x), 10); |
| 16 | +var g = fun(((x => x)), ((x => x)), 10); |
| 17 | +var h = fun((((x => x))), ((x => x)), 10); |
| 18 | + |
| 19 | +// Ternaries in parens |
| 20 | +var i = fun((Math.random() < 0.5 ? x => x : x => undefined), 10); |
| 21 | +var j = fun((Math.random() < 0.5 ? (x => x) : (x => undefined)), 10); |
| 22 | +var k = fun((Math.random() < 0.5 ? (x => x) : (x => undefined)), x => x, 10); |
| 23 | +var l = fun(((Math.random() < 0.5 ? ((x => x)) : ((x => undefined)))), ((x => x)), 10); |
| 24 | + |
| 25 | +var lambda1: (x: number) => number = x => x; |
| 26 | +var lambda2: (x: number) => number = (x => x); |
| 27 | + |
| 28 | +type ObjType = { x: (p: number) => string; y: (p: string) => number }; |
| 29 | +var obj1: ObjType = { x: x => (x, undefined), y: y => (y, undefined) }; |
| 30 | +var obj2: ObjType = ({ x: x => (x, undefined), y: y => (y, undefined) }); |
| 31 | + |
| 32 | +//// [parenthesizedContexualTyping1.js] |
| 33 | +function fun(g, x) { |
| 34 | + return g(x); |
| 35 | +} |
| 36 | +var a = fun(function (x) { return x; }, 10); |
| 37 | +var b = fun((function (x) { return x; }), 10); |
| 38 | +var c = fun(((function (x) { return x; })), 10); |
| 39 | +var d = fun((((function (x) { return x; }))), 10); |
| 40 | +var e = fun(function (x) { return x; }, function (x) { return x; }, 10); |
| 41 | +var f = fun((function (x) { return x; }), (function (x) { return x; }), 10); |
| 42 | +var g = fun(((function (x) { return x; })), ((function (x) { return x; })), 10); |
| 43 | +var h = fun((((function (x) { return x; }))), ((function (x) { return x; })), 10); |
| 44 | +// Ternaries in parens |
| 45 | +var i = fun((Math.random() < 0.5 ? function (x) { return x; } : function (x) { return undefined; }), 10); |
| 46 | +var j = fun((Math.random() < 0.5 ? (function (x) { return x; }) : (function (x) { return undefined; })), 10); |
| 47 | +var k = fun((Math.random() < 0.5 ? (function (x) { return x; }) : (function (x) { return undefined; })), function (x) { return x; }, 10); |
| 48 | +var l = fun(((Math.random() < 0.5 ? ((function (x) { return x; })) : ((function (x) { return undefined; })))), ((function (x) { return x; })), 10); |
| 49 | +var lambda1 = function (x) { return x; }; |
| 50 | +var lambda2 = (function (x) { return x; }); |
| 51 | +var obj1 = { x: function (x) { return (x, undefined); }, y: function (y) { return (y, undefined); } }; |
| 52 | +var obj2 = ({ x: function (x) { return (x, undefined); }, y: function (y) { return (y, undefined); } }); |
0 commit comments