ast: add ptr patterns

This commit is contained in:
2025-10-21 08:35:46 -04:00
parent 263d2290c0
commit 64dc8bb279
2 changed files with 5 additions and 1 deletions

View File

@@ -92,6 +92,8 @@ pub enum PatOp {
Mut,
/// Matches the dereference of a pointer (`&pat`)
Ref,
/// Matches the dereference of a raw pointer (`*pat`)
Ptr,
/// Matches a partial decomposition (`..rest`) or upper-bounded range (`..100`)
Rest,
/// Matches an exclusive bounded range (`0..100`)
@@ -176,7 +178,7 @@ pub enum TypedefKind {
pub enum Expr<A: Annotation = Span> {
/// An identifier
Id(FqPath),
/// A meta-identifier
/// An escaped token for macro binding
MetId(String),
/// A literal bool, string, char, or int
Lit(Literal),
@@ -577,6 +579,7 @@ impl Display for PatOp {
Self::Pub => "pub ",
Self::Mut => "mut ",
Self::Ref => "&",
Self::Ptr => "*",
Self::Rest => "..",
Self::RangeEx => "..",
Self::RangeIn => "..=",

View File

@@ -361,6 +361,7 @@ impl<'t> Parse<'t> for Pat {
TKind::Bar => p.consume().parse(level)?,
TKind::Bang => p.consume().then(Pat::Never),
TKind::Amp => Pat::Op(PatOp::Ref, vec![p.consume().parse(PPrec::Max)?]),
TKind::Star => Pat::Op(PatOp::Ptr, vec![p.consume().parse(PPrec::Max)?]),
TKind::Mut => Pat::Op(PatOp::Mut, vec![p.consume().parse(PPrec::Max)?]),
TKind::Pub => Pat::Op(PatOp::Pub, vec![p.consume().parse(PPrec::Max)?]),
TKind::AmpAmp => Pat::Op(