1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 14:17:36 +00:00

LibCpp: Support parsing empty return statements

This commit is contained in:
Itamar 2021-03-27 19:18:18 +03:00 committed by Andreas Kling
parent 0babb39cae
commit ee35fc0da3
2 changed files with 7 additions and 4 deletions

View file

@ -249,7 +249,8 @@ void StringLiteral::dump(size_t indent) const
void ReturnStatement::dump(size_t indent) const
{
ASTNode::dump(indent);
m_value->dump(indent + 1);
if(m_value)
m_value->dump(indent + 1);
}
void EnumDeclaration::dump(size_t indent) const

View file

@ -901,9 +901,11 @@ NonnullRefPtr<ReturnStatement> Parser::parse_return_statement(ASTNode& parent)
SCOPE_LOGGER();
auto return_statement = create_ast_node<ReturnStatement>(parent, position(), {});
consume(Token::Type::Keyword);
auto expression = parse_expression(*return_statement);
return_statement->m_value = expression;
return_statement->set_end(expression->end());
if(!peek(Token::Type::Semicolon).has_value()) {
auto expression = parse_expression(*return_statement);
return_statement->m_value = expression;
}
return_statement->set_end(position());
return return_statement;
}