From 1a892d6261efaf5cac0ab9b8ae9cc505e91935b3 Mon Sep 17 00:00:00 2001 From: Weixie Cui Date: Sun, 29 Mar 2026 13:44:25 +0800 Subject: [PATCH] fix(parse): use StarStar for ** precedence Exponentiation is lexed as `TokenKind::StarStar`, not `BinOp(Star)`. Match `StarStar` so chained `**` parses with right associativity as intended --- crates/parse/src/parser/expr.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/parse/src/parser/expr.rs b/crates/parse/src/parser/expr.rs index cd1259f59..bcade7c8d 100644 --- a/crates/parse/src/parser/expr.rs +++ b/crates/parse/src/parser/expr.rs @@ -49,10 +49,10 @@ impl<'sess, 'ast> Parser<'sess, 'ast> { while precedence >= min_precedence { while token_precedence(self.token) == precedence { // Parse a**b**c as a**(b**c) - let next_precedence = if self.token.kind == TokenKind::BinOp(BinOpToken::Star) { - precedence + 1 - } else { + let next_precedence = if self.token.kind == TokenKind::StarStar { precedence + } else { + precedence + 1 }; let token = self.token;