mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 13:17:35 +00:00
LibCpp: Fix parsing of ellipsis
Previously the positional information for the node of an ellipsis was incorrect.
This commit is contained in:
parent
55dd568583
commit
1dfdfcf820
1 changed files with 6 additions and 5 deletions
|
@ -743,11 +743,12 @@ Optional<NonnullRefPtrVector<Parameter>> Parser::parse_parameter_list(ASTNode& p
|
||||||
NonnullRefPtrVector<Parameter> parameters;
|
NonnullRefPtrVector<Parameter> parameters;
|
||||||
while (peek().type() != Token::Type::RightParen && !eof()) {
|
while (peek().type() != Token::Type::RightParen && !eof()) {
|
||||||
if (match_ellipsis()) {
|
if (match_ellipsis()) {
|
||||||
auto last_dot = consume();
|
auto param = create_ast_node<Parameter>(parent, position(), {}, StringView {});
|
||||||
while (peek().type() == Token::Type::Dot)
|
consume(Token::Type::Dot);
|
||||||
last_dot = consume();
|
consume(Token::Type::Dot);
|
||||||
auto param = create_ast_node<Parameter>(parent, position(), last_dot.end(), StringView {});
|
auto last_dot = consume(Token::Type::Dot);
|
||||||
param->m_is_ellipsis = true;
|
param->m_is_ellipsis = true;
|
||||||
|
param->set_end(last_dot.end());
|
||||||
parameters.append(move(param));
|
parameters.append(move(param));
|
||||||
} else {
|
} else {
|
||||||
auto type = parse_type(parent);
|
auto type = parse_type(parent);
|
||||||
|
@ -1305,7 +1306,7 @@ bool Parser::match_ellipsis()
|
||||||
{
|
{
|
||||||
if (m_state.token_index > m_tokens.size() - 3)
|
if (m_state.token_index > m_tokens.size() - 3)
|
||||||
return false;
|
return false;
|
||||||
return peek().type() == Token::Type::Dot && peek().type() == Token::Type::Dot && peek().type() == Token::Type::Dot;
|
return peek().type() == Token::Type::Dot && peek(1).type() == Token::Type::Dot && peek(2).type() == Token::Type::Dot;
|
||||||
}
|
}
|
||||||
void Parser::add_tokens_for_preprocessor(Token& replaced_token, Preprocessor::DefinedValue& definition)
|
void Parser::add_tokens_for_preprocessor(Token& replaced_token, Preprocessor::DefinedValue& definition)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue