Fix __eq
This commit is contained in:
parent
c37682aa19
commit
76fa290988
@ -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(
|
};
|
||||||
metatable,
|
|
||||||
"__eq",
|
let value = if let Some(metatable) = metatable {
|
||||||
vec![lhs.clone(), rhs.clone()],
|
match self.call_metamethod(
|
||||||
)??
|
metatable,
|
||||||
.first()
|
"__eq",
|
||||||
.unwrap()
|
vec![lhs.clone(), rhs.clone()],
|
||||||
.is_truthy(),
|
) {
|
||||||
))),
|
Ok(value) => StackValue::Value(extract_ret_value(value)?),
|
||||||
);
|
Err(_) => StackValue::Value(lhs.eq(&rhs)?),
|
||||||
}
|
}
|
||||||
_ => {
|
} else {
|
||||||
self.set_stack(*res, StackValue::Value(lhs.eq(&rhs)?));
|
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);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user