Class MayBeCalledBack

java.lang.Object
org.ek9lang.compiler.support.sharing.MayBeCalledBack
All Implemented Interfaces:
BiPredicate<ISymbol,String>

final class MayBeCalledBack extends Object implements BiPredicate<ISymbol,String>
THE test of whether an object of this type may be handed to a built-in that calls a member of it back that is not pure (D66). Two ways a built-in calls back, so two questions:
  • operator null - a built-in METHOD, which calls what it is given through the DECLARED type: the type (or a type argument of it, to any depth) is a program type with a member it can call that is not pure - any non-pure operator, or a non-pure method that overrides one a super type or trait declares - or a built-in abstract type or trait that has such a method (the program supplies the implementation; one the built-in declares pure is pure in the program too, E05150).
  • operator given - a built-in's in-place write (dict :~: other), which may call that same operator on an element of its RUN-TIME class (THE merge rule recurses into elements, MergeRule): a type argument (to any depth) whose values may be of a type of the program's own - a trait, an abstract or open class, Any, a generic's T - or a program type with that operator, not pure. A Dict of (String, Base) merge runs the :~: of a Cell sub-type of Base; a List of Plain += runs nothing of Plain's.
A function type is not asked: a function a built-in runs is MayChangeArguments' question.