From 53ba4e48bdfa5b9570a420f342570b2a8d17368a Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Sat, 3 Oct 2026 09:58:35 +0800 Subject: [PATCH] =?UTF-8?q?fix(expr):=20=E4=BF=AE=E6=AD=A3=20not=20?= =?UTF-8?q?=E5=8F=96=E5=8F=8D=E7=9A=84=20const=5Fint=20=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F=EF=BC=88bits=20=E5=9C=A8=E5=89=8D=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上一提交 df9a5a9 误把 const_int 参数写成 (value, bits),实际签名为 const_int(pool, bits, val)。改为 const_int(pool, 1, 0)(i1 false),使 not x 真正降级为 (bool(x)==0),不再与 1 比较而恒等。对照本文件 663/680 行的 const_int(pool, 1, 0) 用法可确认参数顺序。 --- App/lib/core/Gen/Expr/ExprGenOps.vp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/App/lib/core/Gen/Expr/ExprGenOps.vp b/App/lib/core/Gen/Expr/ExprGenOps.vp index f59336a..e72f92e 100644 --- a/App/lib/core/Gen/Expr/ExprGenOps.vp +++ b/App/lib/core/Gen/Expr/ExprGenOps.vp @@ -791,7 +791,7 @@ novirtual class ExprGenOps(ExprGenBase.ExprGenBase): not_cond: llvmlite.Value* = self.coerce_cond_to_bool(pool, builder, mod, operand, trans) if not_cond is None: return None - false_val: llvmlite.Value* = llvmlite.const_int(pool, 0, 1) + false_val: llvmlite.Value* = llvmlite.const_int(pool, 1, 0) return llvmlite.build_icmp(builder, llvmlite.ICMP_EQ, not_cond, false_val) elif uo.op == ast.OpKind.Invert: # ~x = x ^ -1