From ba13cf25c85bad88a3cf954fd444b2cbad6fb80c Mon Sep 17 00:00:00 2001 From: Shunsuke Shibayama Date: Fri, 16 Sep 2022 00:35:36 +0900 Subject: [PATCH] Fix comparison operators types --- compiler/erg_compiler/context/initialize/mod.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/compiler/erg_compiler/context/initialize/mod.rs b/compiler/erg_compiler/context/initialize/mod.rs index 31e628fd..cb901b73 100644 --- a/compiler/erg_compiler/context/initialize/mod.rs +++ b/compiler/erg_compiler/context/initialize/mod.rs @@ -1589,12 +1589,12 @@ impl Context { }, ); self.register_builtin_impl("__mul__", op_t, Const, Private); - let op_t = bin_op(l.clone(), r, mono_proj(mono_q("L"), "Output")); + let op_t = bin_op(l.clone(), r.clone(), mono_proj(mono_q("L"), "Output")); let op_t = quant( op_t, set! { static_instance("R", Type), - subtypeof(l, poly("Div", params)) + subtypeof(l.clone(), poly("Div", params.clone())) }, ); self.register_builtin_impl("__div__", op_t, Const, Private); @@ -1612,9 +1612,14 @@ impl Context { let op_t = quant(op_t, set! {subtypeof(e, poly("Eq", vec![]))}); self.register_builtin_impl("__eq__", op_t.clone(), Const, Private); self.register_builtin_impl("__ne__", op_t, Const, Private); - let o = mono_q("O"); - let op_t = bin_op(o.clone(), o.clone(), Bool); - let op_t = quant(op_t, set! {subtypeof(o, mono("Ord"))}); + let op_t = bin_op(l.clone(), r, Bool); + let op_t = quant( + op_t, + set! { + static_instance("R", Type), + subtypeof(l, poly("PartialOrd", params)) + }, + ); self.register_builtin_impl("__lt__", op_t.clone(), Const, Private); self.register_builtin_impl("__le__", op_t.clone(), Const, Private); self.register_builtin_impl("__gt__", op_t.clone(), Const, Private);