mirror of
https://github.com/tc39/test262.git
synced 2025-07-31 01:44:54 +02:00
For each test that asserts the behavior of either "direct" or "indirect" eval (but not both), introduce an equivalent test for the opposite case.
36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
// Copyright (C) 2016 the V8 project authors. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
/*---
|
|
esid: sec-evaldeclarationinstantiation
|
|
es6id: 18.2.1.2
|
|
description: Throws a TypeError if a global variable cannot be defined.
|
|
info: |
|
|
Runtime Semantics: EvalDeclarationInstantiation( body, varEnv, lexEnv, strict)
|
|
|
|
...
|
|
10. For each d in varDeclarations, do
|
|
a. If d is a VariableDeclaration or a ForBinding, then
|
|
i. For each String vn in the BoundNames of d, do
|
|
1. If vn is not an element of declaredFunctionNames, then
|
|
a. If varEnvRec is a global Environment Record, then
|
|
i. Let vnDefinable be varEnvRec.CanDeclareGlobalVar(vn).
|
|
ii. ReturnIfAbrupt(vnDefinable).
|
|
iii. If vnDefinable is false, throw TypeError exception.
|
|
...
|
|
---*/
|
|
|
|
var nonExtensible;
|
|
try {
|
|
Object.preventExtensions(this);
|
|
nonExtensible = !Object.isExtensible(this);
|
|
} catch (e) {
|
|
nonExtensible = false;
|
|
}
|
|
|
|
// Run test if global object is non-extensible.
|
|
if (nonExtensible) {
|
|
assert.throws(TypeError, function() {
|
|
(0,eval)("var unlikelyVariableName;");
|
|
});
|
|
}
|