diff --git a/src/operators.c b/src/operators.c index 42cedd9db92d48c35ab649a65b4f033403036f14..a1cfc62c47b1f28ca1dd520e6d451f0b0d6f6443 100644 --- a/src/operators.c +++ b/src/operators.c @@ -5712,25 +5712,29 @@ void init_operators(void) /* function(mixed...:int) */ ADD_EFUN2("`==",f_eq, - tOr5(tFuncV(tOr(tInt,tFloat) tOr(tInt,tFloat), + tOr6(tFuncV(tOr(tInt,tFloat) tOr(tInt,tFloat), tOr(tInt,tFloat),tInt01), tFuncV(tSetvar(0,tOr4(tString,tMapping,tMultiset,tArray)) tVar(0), tVar(0),tInt01), tFuncV(tOr3(tObj,tPrg(tObj),tFunction) tMix,tMix,tInt01), tFuncV(tMix tOr3(tObj,tPrg(tObj),tFunction),tMix,tInt01), tFuncV(tType(tMix) tType(tMix), - tOr3(tPrg(tObj),tFunction,tType(tMix)),tInt01)), + tOr3(tPrg(tObj),tFunction,tType(tMix)),tInt01), + tFuncV(tSetvar(0,tOr4(tString,tMapping,tMultiset,tArray)), + tNot(tVar(0)),tInt0)), OPT_WEAK_TYPE|OPT_TRY_OPTIMIZE,optimize_eq,generate_comparison); /* function(mixed...:int) */ ADD_EFUN2("`!=",f_ne, - tOr5(tFuncV(tOr(tInt,tFloat) tOr(tInt,tFloat), + tOr6(tFuncV(tOr(tInt,tFloat) tOr(tInt,tFloat), tOr(tInt,tFloat),tInt01), tFuncV(tSetvar(0,tOr4(tString,tMapping,tMultiset,tArray)) tVar(0), tVar(0),tInt01), tFuncV(tOr3(tObj,tPrg(tObj),tFunction) tMix,tMix,tInt01), tFuncV(tMix tOr3(tObj,tPrg(tObj),tFunction),tMix,tInt01), tFuncV(tType(tMix) tType(tMix), - tOr3(tPrg(tObj),tFunction,tType(tMix)),tInt01)), + tOr3(tPrg(tObj),tFunction,tType(tMix)),tInt01), + tFuncV(tSetvar(0,tOr4(tString,tMapping,tMultiset,tArray)), + tNot(tVar(0)),tInt1)), OPT_WEAK_TYPE|OPT_TRY_OPTIMIZE,0,generate_comparison); /* function(mixed:int) */ ADD_EFUN2("`!",f_not,tFuncV(tMix,tVoid,tInt01),