diff --git a/Libraries/LibJS/Parser.cpp b/Libraries/LibJS/Parser.cpp index fdb43ed517..4b3a7b850e 100644 --- a/Libraries/LibJS/Parser.cpp +++ b/Libraries/LibJS/Parser.cpp @@ -65,6 +65,7 @@ NonnullOwnPtr Parser::parse_statement() case TokenType::Return: return parse_return_statement(); case TokenType::Var: + case TokenType::Let: return parse_variable_declaration(); case TokenType::For: return parse_for_statement(); @@ -243,14 +244,27 @@ NonnullOwnPtr Parser::parse_function_declaration() NonnullOwnPtr Parser::parse_variable_declaration() { - consume(TokenType::Var); + DeclarationType declaration_type; + + switch (m_current_token.type()) { + case TokenType::Var: + declaration_type = DeclarationType::Var; + consume(TokenType::Var); + break; + case TokenType::Let: + declaration_type = DeclarationType::Let; + consume(TokenType::Let); + break; + default: + ASSERT_NOT_REACHED(); + } auto name = consume(TokenType::Identifier).value(); OwnPtr initializer; if (match(TokenType::Equals)) { consume(); initializer = parse_expression(); } - return make(make(name), move(initializer), DeclarationType::Var); + return make(make(name), move(initializer), declaration_type); } NonnullOwnPtr Parser::parse_for_statement()