diff --git a/Userland/Libraries/LibCpp/Parser.cpp b/Userland/Libraries/LibCpp/Parser.cpp index 60ffd952a2..f1dec3a00d 100644 --- a/Userland/Libraries/LibCpp/Parser.cpp +++ b/Userland/Libraries/LibCpp/Parser.cpp @@ -950,6 +950,13 @@ Position Parser::position() const return peek().start(); } +Position Parser::previous_token_end() const +{ + if (m_state.token_index < 1) + return {}; + return m_tokens[m_state.token_index - 1].end(); +} + RefPtr Parser::node_at(Position pos) const { VERIFY(m_saved_states.is_empty()); @@ -1266,7 +1273,7 @@ NonnullRefPtr Parser::parse_type(ASTNode& parent) type = fn_type; } - type->set_end(position()); + type->set_end(previous_token_end()); return type; } @@ -1451,7 +1458,7 @@ NonnullRefPtr Parser::parse_name(ASTNode& parent) consume(Token::Type::Greater); } - name_node->set_end(position()); + name_node->set_end(previous_token_end()); return name_node; } diff --git a/Userland/Libraries/LibCpp/Parser.h b/Userland/Libraries/LibCpp/Parser.h index 9a0f457fac..ee74b28720 100644 --- a/Userland/Libraries/LibCpp/Parser.h +++ b/Userland/Libraries/LibCpp/Parser.h @@ -133,6 +133,7 @@ private: Token peek(size_t offset = 0) const; Optional peek(Token::Type) const; Position position() const; + Position previous_token_end() const; String text_in_range(Position start, Position end) const; void save_state();