LibJS: Implement const variable declarations

This also tightens the means of redeclaration of a variable by proxy,
since we now have a way of knowing how a variable was initially
declared, we can check if it was declared using `let` or `const` and
not tolerate redeclaration like we did previously.
This commit is contained in:
0xtechnobabble
2020-03-12 14:24:34 +02:00
committed by Andreas Kling
parent 8557bc56f7
commit ee5a49e2fe
5 changed files with 46 additions and 13 deletions

View File

@@ -30,6 +30,7 @@
#include <AK/Vector.h>
#include <LibJS/Forward.h>
#include <LibJS/Heap.h>
#include <LibJS/Value.h>
namespace JS {
@@ -38,10 +39,15 @@ enum class ScopeType {
Block,
};
struct Variable {
Value value;
DeclarationType declaration_type;
};
struct ScopeFrame {
ScopeType type;
const ScopeNode& scope_node;
HashMap<String, Value> variables;
HashMap<String, Variable> variables;
};
class Interpreter {