fix: release eq

This commit is contained in:
2025-07-05 21:07:23 +08:00
parent 5625f28e9b
commit 4b567ab022
22 changed files with 1132 additions and 915 deletions

View File

@@ -87,9 +87,9 @@ impl Evaluate for ir::BinOp {
}
Mul => lhs.mul(rhs),
Div => lhs.div(rhs)?,
Eq => Value::eq(&mut lhs, rhs),
Eq => Value::eq(&mut lhs, &rhs),
Neq => {
Value::eq(&mut lhs, rhs);
Value::eq(&mut lhs, &rhs);
lhs.not();
}
Lt => lhs.lt(rhs),
@@ -197,9 +197,7 @@ impl Evaluate for ir::If {
impl Evaluate for ir::LoadFunc {
fn eval(&self, engine: &mut Engine, env: &mut Env) -> Result<Value> {
let idx = engine.func_offset + self.idx;
let result = Value::Func(idx).ok();
Ok(result.unwrap())
Value::Func(self.idx).ok()
}
}
@@ -207,14 +205,14 @@ impl Evaluate for ir::Call {
fn eval(&self, engine: &mut Engine, env: &mut Env) -> Result<Value> {
let mut func = self.func.eval(engine, env)?;
func.force(engine, env)?;
let result = func.call(
func.call(
self.args
.iter()
.map(|arg| arg.eval(engine, env))
.collect::<Result<_>>()?,
engine,
env,
);
)?;
Ok(func.ok().unwrap())
}
}
@@ -264,7 +262,7 @@ impl Evaluate for ir::ConcatStrings {
}
}
impl Evaluate for ir::String {
impl Evaluate for ir::Str {
fn eval(&self, _: &mut Engine, _: &mut Env) -> Result<Value> {
let result = Value::String(self.val.clone()).ok();
Ok(result.unwrap())