Fix parsing of expression statements

This commit is contained in:
Sofia 2026-04-09 17:55:09 +03:00
parent 8e2bc3a7f7
commit ed51ee61ed

View File

@ -135,8 +135,7 @@ namespace parsing {
auto ret = new AST::ReturnStatement{ std::move(expression) }; auto ret = new AST::ReturnStatement{ std::move(expression) };
return new std::unique_ptr<AST::Statement>{ ret }; return new std::unique_ptr<AST::Statement>{ ret };
} }
else if (inner.peek().type == token::Type::Ident) { else if (auto init = parse_init_statement(inner); init.ok()) {
if (auto init = parse_init_statement(inner); init.ok()) {
stream.m_position = inner.m_position; stream.m_position = inner.m_position;
return new std::unique_ptr<AST::Statement>{ init.unwrap() }; return new std::unique_ptr<AST::Statement>{ init.unwrap() };
} }
@ -146,10 +145,6 @@ namespace parsing {
auto expr_statement = new AST::ExpressionStatement{ expr.unwrap() }; auto expr_statement = new AST::ExpressionStatement{ expr.unwrap() };
return new std::unique_ptr<AST::Statement>{ expr_statement }; return new std::unique_ptr<AST::Statement>{ expr_statement };
} }
else {
throw std::runtime_error("Expected initialization statement");
}
}
else { else {
throw std::runtime_error("Expected return-keyword"); throw std::runtime_error("Expected return-keyword");
} }