commit 5359b2e95b1d57f542aa9ee98ec76182fea4243f parent 6985ed7b2bc849460ff5d99ff3e6633aaf7f9eae Author: Debadree Chatterjee <debadree333@gmail.com> Date: Fri, 14 Nov 2025 18:29:44 +0000 Bug 2000160: Disallow using statements on eval toplevel. r=arai Differential Revision: https://phabricator.services.mozilla.com/D272609 Diffstat:
| M | js/src/frontend/ParseContext.h | | | 9 | ++++++--- |
| M | js/src/tests/jstests.list | | | 1 | - |
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/js/src/frontend/ParseContext.h b/js/src/frontend/ParseContext.h @@ -599,9 +599,12 @@ class MOZ_STACK_CLASS ParseContext : public Nestable<ParseContext> { #ifdef ENABLE_EXPLICIT_RESOURCE_MANAGEMENT bool isUsingSyntaxAllowed() { - bool isInSwitch = innermostStatement() && - innermostStatement()->kind() == StatementKind::Switch; - return (!atGlobalLevel() || atModuleTopLevel()) && !isInSwitch; + if (innermostStatement() && + innermostStatement()->kind() == StatementKind::Switch) { + return false; + } + + return innermostStatement_ || sc_->isFunction() || sc_->isModule(); } #endif diff --git a/js/src/tests/jstests.list b/js/src/tests/jstests.list @@ -707,7 +707,6 @@ skip script test262/language/statements/await-using/syntax/await-using-invalid-a skip script test262/language/statements/using/syntax/using-invalid-assignment-statement-body-for-of.js skip script test262/language/statements/using/syntax/with-initializer-default-statement-list.js skip script test262/language/statements/using/syntax/using-invalid-assignment-next-expression-for.js -skip script test262/language/statements/using/syntax/using-not-allowed-at-top-level-of-eval.js skip script test262/language/statements/using/syntax/using-for-using-of-of.js