test262/test/language/statements/class/fields-direct-eval-err-cont...

37 lines
1.1 KiB
JavaScript
Raw Normal View History

2017-10-21 01:27:59 +02:00
// This file was procedurally generated from the following sources:
2018-09-05 22:12:46 +02:00
// - src/class-elements/eval-err-contains-arguments.case
// - src/class-elements/initializer-eval-arguments/cls-decl-fields-eval.template
2017-10-21 01:27:59 +02:00
/*---
description: error if `arguments` in StatementList of eval (direct eval)
esid: sec-performeval-rules-in-initializer
2017-11-28 18:49:12 +01:00
features: [class, class-fields-public]
2017-10-21 01:27:59 +02:00
flags: [generated]
info: |
Additional Early Error Rules for Eval Inside Initializer
These static semantics are applied by PerformEval when a direct eval call occurs inside a class field initializer.
ScriptBody : StatementList
It is a Syntax Error if ContainsArguments of StatementList is true.
...
Static Semantics: ContainsArguments
IdentifierReference : Identifier
1. If the StringValue of Identifier is "arguments", return true.
...
For all other grammatical productions, recurse on all nonterminals. If any piece returns true, then return true. Otherwise return false.
---*/
var executed = false;
2017-11-01 15:54:11 +01:00
class C {
2017-10-21 01:27:59 +02:00
x = eval('executed = true; arguments;');
}
assert.throws(SyntaxError, function() {
new C();
});
assert.sameValue(executed, false);