Class InheritedDispatcherGenerator
java.lang.Object
org.ek9lang.compiler.phase7.synthesis.AbstractSyntheticGenerator
org.ek9lang.compiler.phase7.synthesis.InheritedDispatcherGenerator
The body of a synthesised inherited-dispatcher entry point (front-end rationalisation D2): call the entry point it
overrides on the super, directly (a super call, never virtual), and return what that returns.
The dispatch table is NOT built here: DispatchTablePass prepends it, as for any dispatcher, over the
handlers of the WHOLE chain (DispatcherHandlers.collectFor). So a call that a handler of this type or of a
super matches goes straight to that handler, and anything else reaches this body - the super's own entry point,
with its own table and, at the top, the fallback body the author wrote.
ReturnType render(shape): DISPATCH_TABLE ... // prepended by DispatchTablePass rtn = super.render(shape) // CALL (DefiningSuper)super.render(shape), not virtual return rtn
-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractSyntheticGenerator
AbstractSyntheticGenerator.CycleGuardEntry, AbstractSyntheticGenerator.ScopeSetup -
Field Summary
Fields inherited from class AbstractSyntheticGenerator
stackContext, synthesisedCallMetaData -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongenerate(MethodSymbol entryPoint, AggregateSymbol aggregateSymbol) Methods inherited from class AbstractSyntheticGenerator
aggregateHasOperator, constructorCall, createDebugInfo, createSynthesisScope, fieldTypeHasRealOperator, generateBinaryOperatorGuards, generateBooleanBranch, generateCycleGuardedRegion, generateCycleGuardEnter, generateFieldLoad, generateFieldLoad, generateFieldSetStatusCheck, generateIsSetGuard, generateIsSetGuard, generateLabelName, generatePoisonableCycleGuardedRegion, generateResultReturnBlock, generateResultReturnBlock, generateStringLiteralLoad, generateTempName, generateThisIsSetGuard, generateThisIsSetGuard, generateUnsetReturnBlockWithLabel, generateUnsetReturnBlockWithLabel, getAnyType, getAnyTypeName, getBitsType, getBitsTypeName, getBooleanType, getBooleanTypeName, getIntegerType, getIntegerTypeName, getReturnBlockHelper, getStringType, getStringTypeName, getSuperTypeName, getSyntheticFields, getType, getTypeName, getVoidTypeName, initializeScope, initializeScopeNoReturn, isAnyType, isTraitType, methodCall, nearestSuperOperator, needsCycleGuard, rendersNothing, servingOperatorParameterTypeName, superCallOwner, superContributesRepresentation, superHasOperator
-
Constructor Details
-
InheritedDispatcherGenerator
InheritedDispatcherGenerator(IRGenerationContext stackContext)
-
-
Method Details
-
generate
-