test262/implementation-contributed/javascriptcore/stress/eval-func-decl-in-frozen-global.js
test262-automation e9a5a7f918 [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time) (#1620)
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
2018-07-03 15:59:58 -04:00

49 lines
1.2 KiB
JavaScript

var assert = function (result, expected, message) {
if (result !== expected) {
throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );
}
};
var assertThrow = function (cb, errorText) {
var error = null;
try {
cb();
} catch (e) {
error = e.toString();
}
if (error === null)
throw new Error('Expected error');
if (error !== errorText)
throw new Error('Expected error ' + errorText + ' but was ' + error);
};
{
eval('{ function foo() {} }');
assert(this.hasOwnProperty("foo"), true);
assert(typeof foo, 'function');
}
Object.defineProperty(this, "globalNonWritable", {
value: false,
configurable: true,
writable: false,
enumerable: true
});
eval("{function globalNonWritable() { return 1; }}");
var globalNonWritableDescriptor
= Object.getOwnPropertyDescriptor(this, "globalNonWritable");
assert(globalNonWritableDescriptor.enumerable, true);
Object.freeze(this);
{
var error = false;
try {
eval('{ function boo() {} }');
} catch (e) {
error = true;
}
assert(this.hasOwnProperty("boo"), false);
assert(error, false);
assertThrow(() => boo, 'ReferenceError: Can\'t find variable: boo');
}