authorgravatar for gbell12907@gmail.comCMDRZero <gbell12907@gmail.com> 2026-07-31 12:21:38-05:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-22 12:21:43+02:00
loga25a20160258b9936ff402e5da404420004fecff
treecc691b9683521f6abdbf049ed73059a324d11f42
parent197f7ee6d248a004763d5bb640a14dc4117d5a70

Fix `Parse.zig` bug pointing to wrong ambiguous operator


1 files changed, 2 insertions(+), 5 deletions(-)

lib/std/zig/Parse.zig+2-5
...@@ -1772,11 +1772,9 @@ const operTable = std.enums.directEnumArrayDefault(Token.Tag, OperInfo, .{ .prec...@@ -1772,11 +1772,9 @@ const operTable = std.enums.directEnumArrayDefault(Token.Tag, OperInfo, .{ .prec
1772 // zig fmt: on1772 // zig fmt: on
1773});1773});
17741774
1775fn parseExprPrecedence(p: *Parse, min_exc_prec: PrecClass, prev_token_const: u32) Error!?Node.Index {1775fn parseExprPrecedence(p: *Parse, min_exc_prec: PrecClass, prev_operator_token: u32) Error!?Node.Index {
1776 var node = try p.parsePrefixExpr() orelse return null;1776 var node = try p.parsePrefixExpr() orelse return null;
17771777
1778 var prev_operator_token = prev_token_const;
1779
1780 while (true) {1778 while (true) {
1781 const tok_tag = p.tokenTag(p.tok_i);1779 const tok_tag = p.tokenTag(p.tok_i);
1782 const info = operTable[@backingInt(tok_tag)];1780 const info = operTable[@backingInt(tok_tag)];
...@@ -1884,8 +1882,7 @@ fn parseExprPrecedence(p: *Parse, min_exc_prec: PrecClass, prev_token_const: u32...@@ -1884,8 +1882,7 @@ fn parseExprPrecedence(p: *Parse, min_exc_prec: PrecClass, prev_token_const: u32
1884 }1882 }
1885 }1883 }
18861884
1887 prev_operator_token = oper_token;1885 const rhs = try p.parseExprPrecedence(info.prec, oper_token) orelse {
1888 const rhs = try p.parseExprPrecedence(info.prec, prev_operator_token) orelse {
1889 try p.warn(.expected_expr);1886 try p.warn(.expected_expr);
1890 return node;1887 return node;
1891 };1888 };