ast: add ptr patterns
This commit is contained in:
@@ -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 => "..=",
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user