// arrow functions are not implicitly strict-mode code

load(libdir + "asserts.js");

var f = a => { with (a) return f(); };
assertEq(f({f: () => 7}), 7);

f = a => function () { with (a) return f(); };
assertEq(f({f: () => 7})(), 7);

f = (a = {x: 1, x: 2}) => b => { "use strict"; return a.x; };
assertEq(f()(0), 2);