Rename StartSubtree -> GetSubtreeStartPosition.

This function doesn't actually start a subtree, it just remembers a
position from which we could start a subtree.
This commit is contained in:
Richard Smith
2021-04-27 13:05:28 -07:00
parent 857a7e5cc6
commit a3614f153b
2 changed files with 21 additions and 20 deletions
+16 -16
View File
@@ -209,7 +209,7 @@ struct ParseTree::Parser::SubtreeStart {
int tree_size;
};
auto ParseTree::Parser::StartSubtree() -> SubtreeStart {
auto ParseTree::Parser::GetSubtreeStartPosition() -> SubtreeStart {
return {static_cast<int>(tree.node_impls.size())};
}
@@ -379,7 +379,7 @@ auto ParseTree::Parser::ParseParenList(ListElementParser list_element_parser,
auto ParseTree::Parser::ParseFunctionParameter() -> llvm::Optional<Node> {
// A parameter is of the form
// type identifier
auto start = StartSubtree();
auto start = GetSubtreeStartPosition();
auto type = ParseType();
@@ -396,7 +396,7 @@ auto ParseTree::Parser::ParseFunctionParameter() -> llvm::Optional<Node> {
}
auto ParseTree::Parser::ParseFunctionSignature() -> bool {
auto start = StartSubtree();
auto start = GetSubtreeStartPosition();
auto params = ParseParenList(
[&] { return ParseFunctionParameter(); },
@@ -408,7 +408,7 @@ auto ParseTree::Parser::ParseFunctionSignature() -> bool {
has_errors);
});
auto start_return_type = StartSubtree();
auto start_return_type = GetSubtreeStartPosition();
if (auto arrow = ConsumeIf(TokenKind::MinusGreater())) {
auto return_type = ParseType();
AddNode(ParseNodeKind::ReturnType(), *arrow, start_return_type,
@@ -423,7 +423,7 @@ auto ParseTree::Parser::ParseFunctionSignature() -> bool {
auto ParseTree::Parser::ParseCodeBlock() -> Node {
TokenizedBuffer::Token open_curly = Consume(TokenKind::OpenCurlyBrace());
auto start = StartSubtree();
auto start = GetSubtreeStartPosition();
bool has_errors = false;
@@ -450,7 +450,7 @@ auto ParseTree::Parser::ParseCodeBlock() -> Node {
auto ParseTree::Parser::ParseFunctionDeclaration() -> Node {
TokenizedBuffer::Token function_intro_token = Consume(TokenKind::FnKeyword());
auto start = StartSubtree();
auto start = GetSubtreeStartPosition();
auto add_error_function_node = [&] {
return AddNode(ParseNodeKind::FunctionDeclaration(), function_intro_token,
@@ -509,7 +509,7 @@ auto ParseTree::Parser::ParseFunctionDeclaration() -> Node {
auto ParseTree::Parser::ParseVariableDeclaration() -> Node {
// `var` expression identifier [= expression] `;`
TokenizedBuffer::Token var_token = Consume(TokenKind::VarKeyword());
auto start = StartSubtree();
auto start = GetSubtreeStartPosition();
auto type = ParseType();
@@ -522,7 +522,7 @@ auto ParseTree::Parser::ParseVariableDeclaration() -> Node {
}
}
auto start_init = StartSubtree();
auto start_init = GetSubtreeStartPosition();
if (auto equal_token = ConsumeIf(TokenKind::Equal())) {
auto init = ParseExpression();
AddNode(ParseNodeKind::VariableInitializer(), *equal_token, start_init,
@@ -580,7 +580,7 @@ auto ParseTree::Parser::ParseDeclaration() -> llvm::Optional<Node> {
auto ParseTree::Parser::ParseParenExpression() -> llvm::Optional<Node> {
// `(` expression `)`
auto start = StartSubtree();
auto start = GetSubtreeStartPosition();
TokenizedBuffer::Token open_paren = Consume(TokenKind::OpenParen());
// TODO: If the next token is a close paren, build an empty tuple literal.
@@ -657,7 +657,7 @@ auto ParseTree::Parser::ParseCallExpression(SubtreeStart start, bool has_errors)
}
auto ParseTree::Parser::ParsePostfixExpression() -> llvm::Optional<Node> {
auto start = StartSubtree();
auto start = GetSubtreeStartPosition();
llvm::Optional<Node> expression = ParsePrimaryExpression();
while (true) {
@@ -679,7 +679,7 @@ auto ParseTree::Parser::ParsePostfixExpression() -> llvm::Optional<Node> {
auto ParseTree::Parser::ParseOperatorExpression(
PrecedenceGroup ambient_precedence) -> llvm::Optional<Node> {
auto start = StartSubtree();
auto start = GetSubtreeStartPosition();
llvm::Optional<Node> lhs;
PrecedenceGroup lhs_precedence = PrecedenceGroup::ForPostfixExpression();
@@ -746,7 +746,7 @@ auto ParseTree::Parser::ParseExpression() -> llvm::Optional<Node> {
auto ParseTree::Parser::ParseExpressionStatement() -> llvm::Optional<Node> {
TokenizedBuffer::Token start_token = *position;
auto start = StartSubtree();
auto start = GetSubtreeStartPosition();
bool has_errors = !ParseExpression();
@@ -774,7 +774,7 @@ auto ParseTree::Parser::ParseExpressionStatement() -> llvm::Optional<Node> {
auto ParseTree::Parser::ParseParenCondition(TokenKind introducer)
-> llvm::Optional<Node> {
// `(` expression `)`
auto start = StartSubtree();
auto start = GetSubtreeStartPosition();
auto open_paren = ConsumeIf(TokenKind::OpenParen());
if (!open_paren) {
emitter.EmitError<ExpectedParenAfter>(*position,
@@ -796,7 +796,7 @@ auto ParseTree::Parser::ParseParenCondition(TokenKind introducer)
}
auto ParseTree::Parser::ParseIfStatement() -> llvm::Optional<Node> {
auto start = StartSubtree();
auto start = GetSubtreeStartPosition();
auto if_token = Consume(TokenKind::IfKeyword());
auto cond = ParseParenCondition(TokenKind::IfKeyword());
auto then_case = ParseStatement();
@@ -810,7 +810,7 @@ auto ParseTree::Parser::ParseIfStatement() -> llvm::Optional<Node> {
}
auto ParseTree::Parser::ParseWhileStatement() -> llvm::Optional<Node> {
auto start = StartSubtree();
auto start = GetSubtreeStartPosition();
auto while_token = Consume(TokenKind::WhileKeyword());
auto cond = ParseParenCondition(TokenKind::WhileKeyword());
auto body = ParseStatement();
@@ -824,7 +824,7 @@ auto ParseTree::Parser::ParseKeywordStatement(ParseNodeKind kind,
auto keyword_kind = NextTokenKind();
assert(keyword_kind.IsKeyword());
auto start = StartSubtree();
auto start = GetSubtreeStartPosition();
auto keyword = Consume(keyword_kind);
bool arg_error = false;