Unify DeclaredName and DesignatedName as just Identifier (#2939)

This is just a simplification: I think these different forms are getting in the way more than they're helping, particularly as I was looking into namespace functionality. The handling in semantics can be identical, providing a more uniform behavior.
This commit is contained in:
Jon Ross-Perkins
2023-06-22 16:20:06 -07:00
committed by GitHub
parent 2e7ce09c34
commit 5a90f660b9
188 changed files with 487 additions and 498 deletions
+14 -22
View File
@@ -32,13 +32,6 @@ auto SemanticsHandleContinueStatementStart(SemanticsContext& context,
return context.TODO(parse_node, "HandleContinueStatementStart");
}
auto SemanticsHandleDeclaredName(SemanticsContext& context,
ParseTree::Node parse_node) -> bool {
// The parent is responsible for binding the name.
context.node_stack().Push(parse_node);
return true;
}
auto SemanticsHandleDeducedParameterList(SemanticsContext& context,
ParseTree::Node parse_node) -> bool {
return context.TODO(parse_node, "HandleDeducedParameterList");
@@ -50,19 +43,10 @@ auto SemanticsHandleDeducedParameterListStart(SemanticsContext& context,
return context.TODO(parse_node, "HandleDeducedParameterListStart");
}
auto SemanticsHandleDesignatedName(SemanticsContext& context,
ParseTree::Node parse_node) -> bool {
auto name_str = context.parse_tree().GetNodeText(parse_node);
auto name_id = context.semantics_ir().AddString(name_str);
// The parent is responsible for binding the name.
context.node_stack().Push(parse_node, name_id);
return true;
}
auto SemanticsHandleDesignatorExpression(SemanticsContext& context,
ParseTree::Node parse_node) -> bool {
auto name_id = context.node_stack().Pop<SemanticsStringId>(
ParseNodeKind::DesignatedName);
auto name_id =
context.node_stack().Pop<SemanticsStringId>(ParseNodeKind::Identifier);
auto base_id = context.node_stack().Pop<SemanticsNodeId>();
auto base = context.semantics_ir().GetNode(base_id);
@@ -156,6 +140,15 @@ auto SemanticsHandleGenericPatternBinding(SemanticsContext& context,
return context.TODO(parse_node, "GenericPatternBinding");
}
auto SemanticsHandleIdentifier(SemanticsContext& context,
ParseTree::Node parse_node) -> bool {
auto name_str = context.parse_tree().GetNodeText(parse_node);
auto name_id = context.semantics_ir().AddString(name_str);
// The parent is responsible for binding the name.
context.node_stack().Push(parse_node, name_id);
return true;
}
auto SemanticsHandleInfixOperator(SemanticsContext& context,
ParseTree::Node parse_node) -> bool {
auto rhs_id = context.node_stack().Pop<SemanticsNodeId>();
@@ -385,10 +378,9 @@ auto SemanticsHandlePatternBinding(SemanticsContext& context,
auto cast_type_id = context.ExpressionAsType(type_node, parsed_type_id);
// Get the name.
auto name_node =
context.node_stack().PopForSoloParseNode(ParseNodeKind::DeclaredName);
auto name_str = context.parse_tree().GetNodeText(name_node);
auto name_id = context.semantics_ir().AddString(name_str);
auto [name_node, name_id] =
context.node_stack().PopWithParseNode<SemanticsStringId>(
ParseNodeKind::Identifier);
// Allocate storage, linked to the name for error locations.
auto storage_id =