Class DelegationGenerator
java.lang.Object
org.ek9lang.compiler.phase7.synthesis.AbstractSyntheticGenerator
org.ek9lang.compiler.phase7.synthesis.DelegationGenerator
Generates synthetic IR for trait delegation methods.
When a class delegates a trait to a field (e.g., "with trait of Processor by proc"), the compiler creates synthetic wrapper methods that forward calls to the delegate field. This generator creates the IR for those forwarding methods.
The generated code follows this pattern:
ReturnType methodName(params...): delegate = this.delegateFieldName // Load delegate field result = delegate.methodName(params...) // Forward call return result // Return delegate's result
For void methods:
Void methodName(params...): delegate = this.delegateFieldName delegate.methodName(params...) return
-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractSyntheticGenerator
AbstractSyntheticGenerator.ScopeSetup -
Field Summary
Fields inherited from class AbstractSyntheticGenerator
stackContext -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongenerate(MethodSymbol methodSymbol, AggregateSymbol aggregateSymbol) Generate delegation IR for a synthetic delegation method.Methods inherited from class AbstractSyntheticGenerator
aggregateHasOperator, createDebugInfo, createSynthesisScope, generateAnyFieldSetGuard, generateBinaryOperatorGuards, generateBooleanBranch, generateBooleanReturnBlock, generateConstructorCall, generateConstructorCall, generateConstructorCall, generateConstructorCallWithArgs, generateFieldLoad, generateFieldLoad, generateFieldSetStatusCheck, generateIsSetGuard, generateIsSetGuard, generateLabelName, generateMethodCall, generateMethodCall, generateMethodCall, generateMethodCall, generateMethodCall, generateResultReturnBlock, generateResultReturnBlock, generateStringLiteralLoad, generateTempName, generateThisIsSetGuard, generateThisIsSetGuard, generateUnsetReturnBlock, generateUnsetReturnBlockWithLabel, generateUnsetReturnBlockWithLabel, getBitsTypeName, getBooleanTypeName, getIntegerTypeName, getReturnBlockHelper, getStringTypeName, getSuperTypeName, getSyntheticFields, getTypeName, getVoidTypeName, initializeScope, isAnyType, superHasOperator
-
Constructor Details
-
DelegationGenerator
DelegationGenerator(IRGenerationContext stackContext)
-
-
Method Details
-
generate
Generate delegation IR for a synthetic delegation method.- Parameters:
methodSymbol- The delegation method symbolaggregateSymbol- The aggregate containing the method- Returns:
- List of IR instructions implementing the delegation
-