LibJS: Don't allow the redeclaration of a var variable using let/const

Previously, we were allowing the redeclaration of a variable with `let`
or `const` if it was declared initially using `var`, we should not
tolerate any form of variable redeclaration using let/const.
This commit is contained in:
0xtechnobabble 2020-03-13 20:16:37 +02:00 committed by Andreas Kling
parent 9f38f4dbfb
commit 83ea7bb9e7
Notes: sideshowbarker 2024-07-19 08:19:53 +09:00

View file

@ -96,7 +96,7 @@ void Interpreter::declare_variable(String name, DeclarationType declaration_type
break;
case DeclarationType::Let:
case DeclarationType::Const:
if (m_scope_stack.last().variables.get(name).has_value() && m_scope_stack.last().variables.get(name).value().declaration_type != DeclarationType::Var)
if (m_scope_stack.last().variables.get(name).has_value())
ASSERT_NOT_REACHED();
m_scope_stack.last().variables.set(move(name), { js_undefined(), declaration_type });