var testCase = function (actual, expected, message) { if (actual !== expected) { throw message + ". Expected '" + expected + "', but was '" + actual + "'"; } }; var d = { x : "foo", y : function() { return () => this.x; } }; noInline(d.y); var e = { x : "bar" }; for (var i=0; i<10000;i++){ testCase(d.y().call(e), "foo", "Error: function call shouln't change the lexical binding of the arrow function"); testCase(d.y().apply(e), "foo", "Error: function apply shouln't change the lexical binding of the arrow function"); }