Open scotttrinh opened 2 months ago
@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.
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:instead of