Uses of Record Class
org.ek9lang.compiler.phase7.calls.DispatchFacts
Packages that use DispatchFacts
-
Uses of DispatchFacts in org.ek9lang.compiler.phase7.calls
Methods in org.ek9lang.compiler.phase7.calls that return DispatchFactsModifier and TypeMethodDescription(package private) static DispatchFactsDispatchFacts.ofClose(String ownerTypeName, boolean isTraitCall, boolean isVirtualCall, ISymbol ownerType) The facts of a generatedclose- seeCloseCallTarget, which decides them.static DispatchFactsDispatchFacts.ofForwardToBase(String definingTypeName, ISymbol definingType, ISymbol baseType) The facts of a call a constrained type FORWARDS to its base (a delegated member, a constraint comparison): the call names the type that DECLARES the base member and the trait flag is read off that same type, dispatch is the BASE type's openness, and extern is the declaring type's (IsExternallyLinked).static DispatchFactsDispatchFacts.ofOperatorFallback(Optional<ScopedSymbol> servingMember, ISymbol staticType, boolean explicitSuperReceiver, TypeNameOrException typeNames, UnaryOperator<ISymbol> concreteType) The facts of an operator call with no parse node (path B ofCallDetailsBuilder: a compound assignment, a unary operator, a phase-7 protocol call): the call names the type that declares the serving member when one resolves, else the static type; a trait call is virtual by definition, otherwise dispatch is the static type's openness; extern is the STATIC type's (MONO-5 - see the class note).static DispatchFactsDispatchFacts.ofResolvedCall(ISymbol resolvedMethod, ISymbol servingMethod, ISymbol staticType, boolean explicitSuperReceiver, TypeNameOrException typeNames, UnaryOperator<ISymbol> concreteType) The facts of a call to a member phase 3 RESOLVED (path A ofCallDetailsBuilder): the call names the type that DECLARES the serving member, the trait flag is read off that same type (they move together -CallTargetResolution), dispatch isIsVirtualCallof the RECORDED member and the static type, and extern is the declaring type's.static DispatchFactsDispatchFacts.ofSynthesisedCallee(String targetTypeName, boolean isTraitCall, ISymbol calleeType, UnaryOperator<ISymbol> concreteType) The facts of a call the compiler SYNTHESISED on a value's type (?,close): the named type and its trait flag as given, dispatch from the callee type's openness (IsVirtualForSynthesisedCallee), extern the callee type's (IsExternallyLinked).static DispatchFactsDispatchFacts.ofTargetType(String targetTypeName, ISymbol targetType, boolean shapePermitsDispatch) The facts of a call on a type held as a SYMBOL but with no resolved member (CallDetailsFactory.call's symbol overload): the call names that type, the trait flag and openness are read off it, the call SHAPE may veto dispatch, and extern is the named type's (IsExternallyLinked).CloseCallTarget.ofType(ISymbol staticType, String staticTypeName, Function<ISymbol, String> resolveTypeName) The dispatch facts for closing a value whose static TYPE is known.DispatchFacts.viaSuper()These facts for the same member reached throughsuper: the named type is kept, and the call is neither an interface call nor dispatched - it runs exactly that type's body. -
Uses of DispatchFacts in org.ek9lang.compiler.phase7.support
Methods in org.ek9lang.compiler.phase7.support with parameters of type DispatchFactsModifier and TypeMethodDescriptionCallDetailsFactory.resolvedCall(String targetObject, DispatchFacts dispatch, String methodName, List<String> parameterTypes, String returnTypeName, List<String> arguments, CallMetaDataDetails metaData, boolean statementOwned) THE call to a callee whose dispatch was decided byDispatchFacts- the type it names, interface or not, virtual or not, extern or not all come from the facts, so a route never writes the four flags by hand.