From 267d83c347771d43f54e234c2863484887cc997a Mon Sep 17 00:00:00 2001 From: jonmeow Date: Fri, 28 Feb 2025 11:40:23 -0800 Subject: [PATCH 1/3] Refactor HandleIdentifierName away --- toolchain/check/handle_name.cpp | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/toolchain/check/handle_name.cpp b/toolchain/check/handle_name.cpp index be10cf5f4e4e1..700640b5f40c9 100644 --- a/toolchain/check/handle_name.cpp +++ b/toolchain/check/handle_name.cpp @@ -92,12 +92,10 @@ auto HandleParseNode(Context& context, Parse::PointerMemberAccessExprId node_id) } static auto GetIdentifierAsName(Context& context, Parse::NodeId node_id) - -> std::optional { + -> SemIR::NameId { + CARBON_CHECK(!context.parse_tree().node_has_error(node_id), + "Unreachable until we support checking error parse nodes"); auto token = context.parse_tree().node_token(node_id); - if (context.tokens().GetKind(token) != Lex::TokenKind::Identifier) { - CARBON_CHECK(context.parse_tree().node_has_error(node_id)); - return std::nullopt; - } return SemIR::NameId::ForIdentifier(context.tokens().GetIdentifier(token)); } @@ -128,20 +126,11 @@ static auto HandleNameAsExpr(Context& context, Parse::NodeId node_id, {.type_id = type_id, .name_id = name_id, .value_id = inst_id}); } -static auto HandleIdentifierName(Context& context, - Parse::AnyNonExprIdentifierNameId node_id) - -> bool { - // The parent is responsible for binding the name. - auto name_id = GetIdentifierAsName(context, node_id); - CARBON_CHECK(name_id, - "Unreachable until we support checking error parse nodes"); - context.node_stack().Push(node_id, *name_id); - return true; -} - auto HandleParseNode(Context& context, Parse::IdentifierNameNotBeforeParamsId node_id) -> bool { - return HandleIdentifierName(context, node_id); + // The parent is responsible for binding the name. + context.node_stack().Push(node_id, GetIdentifierAsName(context, node_id)); + return true; } auto HandleParseNode(Context& context, @@ -150,16 +139,16 @@ auto HandleParseNode(Context& context, context.pattern_block_stack().Push(); context.full_pattern_stack().PushFullPattern( FullPatternStack::Kind::ImplicitParamList); - return HandleIdentifierName(context, node_id); + // The parent is responsible for binding the name. + context.node_stack().Push(node_id, GetIdentifierAsName(context, node_id)); + return true; } auto HandleParseNode(Context& context, Parse::IdentifierNameExprId node_id) -> bool { auto name_id = GetIdentifierAsName(context, node_id); - CARBON_CHECK(name_id, - "Unreachable until we support checking error parse nodes"); context.node_stack().Push(node_id, - HandleNameAsExpr(context, node_id, *name_id)); + HandleNameAsExpr(context, node_id, name_id)); return true; } From 51c351ad2db44a1f3b4225d15d32a192f1e206f7 Mon Sep 17 00:00:00 2001 From: jonmeow Date: Fri, 28 Feb 2025 11:52:41 -0800 Subject: [PATCH 2/3] Rephase check --- toolchain/check/handle_name.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toolchain/check/handle_name.cpp b/toolchain/check/handle_name.cpp index 700640b5f40c9..752079d3bd765 100644 --- a/toolchain/check/handle_name.cpp +++ b/toolchain/check/handle_name.cpp @@ -94,7 +94,7 @@ auto HandleParseNode(Context& context, Parse::PointerMemberAccessExprId node_id) static auto GetIdentifierAsName(Context& context, Parse::NodeId node_id) -> SemIR::NameId { CARBON_CHECK(!context.parse_tree().node_has_error(node_id), - "Unreachable until we support checking error parse nodes"); + "TODO: support checking error parse nodes"); auto token = context.parse_tree().node_token(node_id); return SemIR::NameId::ForIdentifier(context.tokens().GetIdentifier(token)); } From 7b27eb6750890dba483ed101855fde2a8d066727 Mon Sep 17 00:00:00 2001 From: jonmeow Date: Fri, 28 Feb 2025 11:53:15 -0800 Subject: [PATCH 3/3] nit --- toolchain/check/handle_name.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toolchain/check/handle_name.cpp b/toolchain/check/handle_name.cpp index 752079d3bd765..39760d7878f2b 100644 --- a/toolchain/check/handle_name.cpp +++ b/toolchain/check/handle_name.cpp @@ -94,7 +94,7 @@ auto HandleParseNode(Context& context, Parse::PointerMemberAccessExprId node_id) static auto GetIdentifierAsName(Context& context, Parse::NodeId node_id) -> SemIR::NameId { CARBON_CHECK(!context.parse_tree().node_has_error(node_id), - "TODO: support checking error parse nodes"); + "TODO: Support checking error parse nodes"); auto token = context.parse_tree().node_token(node_id); return SemIR::NameId::ForIdentifier(context.tokens().GetIdentifier(token)); }