From e199e15804ac76aae04b8c55b94f7f688c20495d Mon Sep 17 00:00:00 2001 From: John Date: Wed, 24 Dec 2025 17:44:59 -0500 Subject: [PATCH] parser: Tweak `type` and `fn` precedence --- src/parser/expr.rs | 2 +- src/parser/pat.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/parser/expr.rs b/src/parser/expr.rs index 526ffb8..f40b5e9 100644 --- a/src/parser/expr.rs +++ b/src/parser/expr.rs @@ -440,7 +440,7 @@ fn from_bind(p: &mut Parser<'_>) -> PResult<(BindOp, PPrec, Option, Optio let bk = match p.peek()?.kind { // Token Operator Pat prec Body Token Body prec Else prec TKind::Let => (BindOp::Let, PPrec::Tuple, Some(TKind::Eq), Some(Prec::Tuple), Some(Prec::Body)), - TKind::Type => (BindOp::Type, PPrec::Tuple, Some(TKind::Eq), Some(Prec::Extend), None), + TKind::Type => (BindOp::Type, PPrec::Alt, Some(TKind::Eq), Some(Prec::Tuple), None), TKind::Struct => (BindOp::Struct, PPrec::Tuple, None, None, None), TKind::Enum => (BindOp::Enum, PPrec::Tuple, None, None, None), TKind::Fn => (BindOp::Fn, PPrec::Fn, None, Some(Prec::Body), None), diff --git a/src/parser/pat.rs b/src/parser/pat.rs index 137852a..d8826e2 100644 --- a/src/parser/pat.rs +++ b/src/parser/pat.rs @@ -151,7 +151,7 @@ impl<'t> Parse<'t> for Pat { let kind = tok.kind; head = match op { PatOp::Typed => Pat::Op(op, vec![head, p.consume().parse(prec.next())?]), - PatOp::Fn => Pat::Op(op, vec![head, p.consume().parse(Prec::Fn.next())?]), + PatOp::Fn => Pat::Op(op, vec![head, p.consume().parse(Prec::Fn)?]), PatOp::RangeEx | PatOp::RangeIn => Pat::Op( op, match p.consume().peek().map(Token::kind) {