ソースを参照

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.
0xtechnobabble 5 年 前
コミット
83ea7bb9e7
1 ファイル変更1 行追加1 行削除
  1. 1 1
      Libraries/LibJS/Interpreter.cpp

+ 1 - 1
Libraries/LibJS/Interpreter.cpp

@@ -96,7 +96,7 @@ void Interpreter::declare_variable(String name, DeclarationType declaration_type
         break;
         break;
     case DeclarationType::Let:
     case DeclarationType::Let:
     case DeclarationType::Const:
     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();
             ASSERT_NOT_REACHED();
 
 
         m_scope_stack.last().variables.set(move(name), { js_undefined(), declaration_type });
         m_scope_stack.last().variables.set(move(name), { js_undefined(), declaration_type });