From c18015b9a0205234e3a66e6af955a78ecbc02cff Mon Sep 17 00:00:00 2001 From: TopchetoEU <36534413+TopchetoEU@users.noreply.github.com> Date: Fri, 13 Dec 2024 02:33:25 +0200 Subject: [PATCH] fix: wrong precedences of && and || (how the fuck did i get this wrong) --- .../compilation/values/operations/OperationNode.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/me/topchetoeu/jscript/compilation/values/operations/OperationNode.java b/src/main/java/me/topchetoeu/jscript/compilation/values/operations/OperationNode.java index b299545..36052da 100644 --- a/src/main/java/me/topchetoeu/jscript/compilation/values/operations/OperationNode.java +++ b/src/main/java/me/topchetoeu/jscript/compilation/values/operations/OperationNode.java @@ -80,23 +80,23 @@ public class OperationNode extends Node { } } private static class LazyAndFactory implements OperatorFactory { - @Override public int precedence() { return 4; } + @Override public int precedence() { return 5; } @Override public String token() { return "&&"; } @Override public ParseRes construct(Source src, int i, Node prev) { var loc = src.loc(i); - var other = JavaScript.parseExpression(src, i, 5); + var other = JavaScript.parseExpression(src, i, 6); if (!other.isSuccess()) return other.chainError(src.loc(i + other.n), "Expected a value after '&&'"); return ParseRes.res(new LazyAndNode(loc, prev, (Node)other.result), other.n); } } private static class LazyOrFactory implements OperatorFactory { - @Override public int precedence() { return 5; } + @Override public int precedence() { return 4; } @Override public String token() { return "||"; } @Override public ParseRes construct(Source src, int i, Node prev) { var loc = src.loc(i); - var other = JavaScript.parseExpression(src, i, 6); + var other = JavaScript.parseExpression(src, i, 5); if (!other.isSuccess()) return other.chainError(src.loc(i + other.n), "Expected a value after '||'"); return ParseRes.res(new LazyOrNode(loc, prev, (Node)other.result), other.n); }