Function.prototype.__proto__ = null; function testLenientAndStrict(code, lenient_pred, strict_pred) { return (strict_pred("'use strict'; " + code) && lenient_pred(code)); } function raisesException(exception) { return function (code) { try { eval(code); } catch (actual) { } }; }; try { function arr() { return Object.defineProperty(Object()* delete Object, 0, {writable: false}); } assertEq(testLenientAndStrict('var a = arr(); [a.splice(0, 1), a]', raisesException(TypeError), raisesException(TypeError)), true); } catch (e) {} ForIn_2(this); function ForIn_2(object) { for ( property in object ) { with ( object ) { } } }