mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-11-15 09:38:31 +00:00
Add check support for struct patterns (#7876)
Implements check and pattern matching support for struct patterns. This PR implements complete patterns, and leaves `_` field handling for future work.
This commit is contained in:
1 parent
3ee012b86a
commit
c6b54b57e2
23 files changed
+1764
-110
No files matched your search
@@ -281,7 +281,9 @@ static auto HandleBindingPatternFinish(Context& context, StateKind finish_kind)
|
||||
|
||||
auto node_kind = NodeKind::InvalidParse;
|
||||
if (state.in_var_pattern) {
|
||||
node_kind = NodeKind::VarBindingPattern;
|
||||
node_kind = state.in_field_shorthand_pattern
|
||||
? NodeKind::StructPatternFieldVarBindingPattern
|
||||
: NodeKind::VarBindingPattern;
|
||||
if (finish_kind != StateKind::BindingPatternFinishAsRegular) {
|
||||
CARBON_DIAGNOSTIC(NonRegularBindingInVarDecl, Error,
|
||||
"found {0:generic|`:?`} binding inside `var` pattern",
|
||||
@@ -297,7 +299,9 @@ static auto HandleBindingPatternFinish(Context& context, StateKind finish_kind)
|
||||
node_kind = NodeKind::CompileTimeBindingPattern;
|
||||
break;
|
||||
case StateKind::BindingPatternFinishAsRegular:
|
||||
node_kind = NodeKind::LetBindingPattern;
|
||||
node_kind = state.in_field_shorthand_pattern
|
||||
? NodeKind::StructPatternFieldLetBindingPattern
|
||||
: NodeKind::LetBindingPattern;
|
||||
break;
|
||||
case StateKind::BindingPatternFinishAsForm:
|
||||
node_kind = NodeKind::FormBindingPattern;
|
||||
|
||||
Reference in new issue
Block a user