This commit is contained in:
Sofia 2026-03-21 15:27:29 +02:00
parent c37682aa19
commit 76fa290988

View File

@ -1042,26 +1042,27 @@ impl ClosureRunner {
Instruction::Equal(res, lhs, rhs) => { Instruction::Equal(res, lhs, rhs) => {
let (lhs, rhs) = self.lhs_and_rhs(lhs, rhs); let (lhs, rhs) = self.lhs_and_rhs(lhs, rhs);
match (&lhs, &rhs) {
(Value::Table { metatable, .. }, Value::Table { .. }) => { let metatable = match (&lhs, &rhs) {
self.set_stack( (Value::Table { metatable, .. }, _) => Some(metatable),
*res, (_, Value::Table { metatable, .. }) => Some(metatable),
StackValue::Value(Value::Boolean(LuaBool( _ => todo!(),
self.call_metamethod( };
let value = if let Some(metatable) = metatable {
match self.call_metamethod(
metatable, metatable,
"__eq", "__eq",
vec![lhs.clone(), rhs.clone()], vec![lhs.clone(), rhs.clone()],
)?? ) {
.first() Ok(value) => StackValue::Value(extract_ret_value(value)?),
.unwrap() Err(_) => StackValue::Value(lhs.eq(&rhs)?),
.is_truthy(),
))),
);
}
_ => {
self.set_stack(*res, StackValue::Value(lhs.eq(&rhs)?));
}
} }
} else {
StackValue::Value(lhs.eq(&rhs)?)
};
self.set_stack(*res, value);
} }
Instruction::LessThan(res, lhs, rhs) => { Instruction::LessThan(res, lhs, rhs) => {
let (lhs, rhs) = self.lhs_and_rhs(lhs, rhs); let (lhs, rhs) = self.lhs_and_rhs(lhs, rhs);