Fix `anyscalar` behavior in query builder
In EdgeQL, anyscalar is a kind of generic that binds other usages to the same concrete type when applied rather than being a union of all scalar types as the name implies (and as we're currently treating it).
So, when we have a function or operator that uses anyscalar for two or more operands/arguments, the actual type is constrained as if all arguments agree on the instance of the generic. So more like:
function eq<T extends scalar>(l: T, r: T);
instead of
function eq(l: scalar, r: scalar);
// or
function eq<T extends scalar, U extends scalar>(l: T, r: U);
@scotttrinh :)
Hello , Please use a constraint such as {function eq<T extends scalar>(l: T, r: T);} to alter function signatures in order to enforce that all arguments share the same concrete type and so fix the anyscalar problem. In order to guarantee type consistency, remove any signatures that permit distinct types. To ensure that the desired behavior is followed and to avoid runtime problems, implement unit tests.