Package org.ek9lang.compiler.phase7.calls
package org.ek9lang.compiler.phase7.calls
-
ClassDescriptionTHE IR
CallDetailsfor the non-virtual EK9 Boolean logical operators that the lowering synthesises -_and,_orand~.Context information needed for resolving method calls and constructing CallDetails.Composable builder for creating CallDetails with cost-based method resolution and promotion support.Result of building CallDetails including any promotion instructions needed.Provides IR Call details for making a call to the EK9 Boolean type to call the _false() method.Just provides the IR Call details for making a call to the Ek9 Boolean type to call the _true() method.Supplies the call details to get a Boolean false value.Details required for processing function calls in a context-aware manner.THE single source of truth for the descriptor OWNER and dispatch of a resolved call - the signpost of the family; hold its parts, one question each, never re-derive them:DefiningType- the type where a resolved method's body is actually emitted (its "defining type"), the descriptor owner.IsVirtualCall- the virtual-dispatch decision of a resolved call.IsOpenAggregate- is a type open for extension (traits and abstract functions always are).IsVirtualForSynthesisedCallee- the dispatch flag of a call the compiler synthesised.IsNonDispatchableLifecycleMethod- the constructor,_i_initand_c_init, never dispatched. Reuse them from BOTH the resolved-method path (CallDetailsBuilder) and the chained object-access path (ChainedCallDispatch) so the two never re-derive - and drift on - the CALL descriptor owner.THE dispatch decision of a method call made in an object-access CHAIN (a.b().c(),super.m(),TraitName.m()) - a pure function of the resolved method, the receiver's static type and the call's shape (EXPR-17).THE target of a compiler-generatedclosecall - try-with-resources, the closeable temporaries a statement owns and the generated close chain all reach it throughResourceCloser.closeCall, so they cannot name different owners or dispatch differently.THE type that DECLARES a resolved method (its enclosing scope) - i.e.THE dispatch facts of a CALL - the fourCallDetailsfields that say WHERE the call goes and HOW it gets there: the type it names (targetTypeName), whether that type is an interface (isTraitCall), whether the call dispatches through the vtable (isVirtualCall) and whether the named type is externally linked (isExternTarget- EXTERN or PRE_BUILT, seeIsExternallyLinked; Steve 2026-10-28).THE test, for a chained call (ChainedCallDispatch), of whetherdefiningTypeis a strict ancestor ofreceiverTypethrough the CLASS super-chain (IAggregateSymbol.getSuperAggregate()- class inheritance only; traits are NOT on this chain).THE test of the compiler-synthesised LIFECYCLE methods, which are never dynamically dispatched: the constructor itself plus_i_init(instance field initialisation) and_c_init(class/static initialisation).THE test of whether a type is open for extension (can have subclasses) - the openness half of a call's dispatch decision (CallTargetResolution).Creates CallDetails for _isSet() method invocation.THE virtual-dispatch decision of a resolved call (CallTargetResolution):falsefor constructors, private methods (cannot be overridden), and targets not open for extension (effectively final).THE dispatch flag for a call the compiler SYNTHESISED, where the callee type may not have been threaded through (CallTargetResolution).THEOperatorMap-derived call metadata of a declared EK9 operator - the second honest source ofSynthesisedCallMetaData, used when the target type carries no resolvable member for the callee.THE honest metadata for a callee with NO target symbol available at all - theOperatorMapdeclaration (OperatorDeclarationMetaData) where the name is a declared EK9 operator, otherwisenull: no clause.THE shared "resolve the callee method on its target type" step for phase-7 synthesised call sites.Processes method call parameters to determine if promotion is required.THE return type of the operator a unary or binary expression resolved to (IR tidy W3.9, OPS-11 - it wasAbstractGenerator.extractReturnType): read off theCallSymbolphase 3 recorded on the expression, the returning type of the method or function it calls, else the fallback (the operand).THE way a phase-7 SYNTHESISED call site obtains itsCallMetaDataDetails.