1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-19 17:35:06 +00:00

LibJS: Throw on assignment of an const variable

Was stubbed out as an assert, should be handled with a runtime exception.
This commit is contained in:
Brian Gianforcaro 2020-04-12 15:50:49 -07:00 committed by Andreas Kling
parent 8e87d340c3
commit 0d41e542b7
2 changed files with 29 additions and 2 deletions

View file

@ -145,8 +145,10 @@ void Interpreter::set_variable(const FlyString& name, Value value, bool first_as
auto possible_match = scope.variables.get(name);
if (possible_match.has_value()) {
if (!first_assignment && possible_match.value().declaration_kind == DeclarationKind::Const)
ASSERT_NOT_REACHED();
if (!first_assignment && possible_match.value().declaration_kind == DeclarationKind::Const) {
throw_exception<TypeError>("Assignment to constant variable");
return;
}
scope.variables.set(move(name), { move(value), possible_match.value().declaration_kind });
return;