carbon-language/carbon-lang

Support for struct patterns

Open

#6680 opened on Feb 2, 2026

View on GitHub
 (7 comments) (0 reactions) (0 assignees)C++ (33,701 stars) (1,535 forks)batch import
good first issuetoolchain

Description

The Carbon toolchain is missing support for struct patterns, as documented here. As "first issues" go, this is probably fairly complex, but there are a couple ways of breaking it down to make it more manageable:

  • You can split it up by compilation phase, implementing parsing, then checking, then lowering in separate PRs (I don't think this will need changes to lexing).
  • You can split it up into sub-features: the core {.foo = foo: Foo, .bar = bar: Bar} syntax, and then the {foo: Foo, bar: Bar} shorthand and the trailing , _ syntax.

I'd recommend doing both: have each PR focus on a single phase of a single feature, and probably do all three phases of the core feature before starting on the shorthand or trailing , _ syntaxes.

Be sure to take a look at the toolchain docs, especially the one about pattern matching, if you're not already familiar with them. The existing support for tuple patterns should also be a useful point of reference, because the two features have a lot in common.

Contributor guide