@@ -9,9 +9,7 @@ use crate::check::constrain::generate::collection::{constr_col, gen_collection_l
99use crate :: check:: constrain:: generate:: env:: Environment ;
1010use crate :: check:: context:: { clss, Context , LookupClass } ;
1111use crate :: check:: context:: clss:: { FLOAT , INT , STRING } ;
12- use crate :: check:: context:: function:: {
13- ADD , DIV , EQ , FDIV , GE , GEQ , LE , LEQ , MOD , MUL , POW , SQRT , SUB ,
14- } ;
12+ use crate :: check:: context:: function:: { ADD , DIV , EQ , FDIV , GE , GEQ , LE , LEQ , MOD , MUL , NEQ , POW , SQRT , SUB } ;
1513use crate :: check:: name:: { Any , Name } ;
1614use crate :: check:: name:: string_name:: StringName ;
1715use crate :: check:: name:: true_name:: TrueName ;
@@ -92,9 +90,8 @@ pub fn gen_op(
9290 Node :: Ge { left, right } => impl_bool_op ( GE , ast, left, right, env, ctx, constr) ,
9391 Node :: Leq { left, right } => impl_bool_op ( LEQ , ast, left, right, env, ctx, constr) ,
9492 Node :: Geq { left, right } => impl_bool_op ( GEQ , ast, left, right, env, ctx, constr) ,
95- Node :: Neq { left, right } | Node :: Eq { left, right } => {
96- impl_bool_op ( EQ , ast, left, right, env, ctx, constr)
97- }
93+ Node :: Neq { left, right } => impl_bool_op ( EQ , ast, left, right, env, ctx, constr) ,
94+ Node :: Eq { left, right } => impl_bool_op ( EQ , ast, left, right, env, ctx, constr) ,
9895
9996 Node :: AddU { expr } | Node :: SubU { expr } => generate ( expr, env, ctx, constr) ,
10097 Node :: Sqrt { expr } => {
@@ -307,26 +304,29 @@ fn impl_bool_op(
307304 ctx : & Context ,
308305 constr : & mut ConstrBuilder ,
309306) -> Constrained {
310- constr. add (
311- "bool operation" ,
312- & Expected :: try_from ( ( ast, & env. var_mappings ) ) ?,
313- & Expected :: new (
314- left. pos ,
315- & Access {
316- entity : Box :: new ( Expected :: try_from ( ( left, & env. var_mappings ) ) ?) ,
317- name : Box :: new ( Expected :: new (
318- left. pos ,
319- & Function {
320- name : StringName :: from ( fun) ,
321- args : vec ! [
322- Expected :: try_from( ( left, & env. var_mappings) ) ?,
323- Expected :: try_from( ( right, & env. var_mappings) ) ?,
324- ] ,
325- } ,
326- ) ) ,
327- } ,
328- ) ,
329- ) ;
307+ if fun != EQ && fun != NEQ {
308+ constr. add (
309+ "bool operation" ,
310+ & Expected :: try_from ( ( ast, & env. var_mappings ) ) ?,
311+ & Expected :: new (
312+ left. pos ,
313+ & Access {
314+ entity : Box :: new ( Expected :: try_from ( ( left, & env. var_mappings ) ) ?) ,
315+ name : Box :: new ( Expected :: new (
316+ left. pos ,
317+ & Function {
318+ name : StringName :: from ( fun) ,
319+ args : vec ! [
320+ Expected :: try_from( ( left, & env. var_mappings) ) ?,
321+ Expected :: try_from( ( right, & env. var_mappings) ) ?,
322+ ] ,
323+ } ,
324+ ) ) ,
325+ } ,
326+ ) ,
327+ ) ;
328+ }
329+
330330 let ty = Type { name : Name :: from ( clss:: BOOL ) } ;
331331 constr. add (
332332 "bool operation" ,
0 commit comments