Class QuestionBlockGenerator
java.lang.Object
org.ek9lang.compiler.phase7.QuestionBlockGenerator
- All Implemented Interfaces:
Function<ExprProcessingDetails,
List<IRInstr>>
public final class QuestionBlockGenerator
extends Object
implements Function<ExprProcessingDetails,List<IRInstr>>
Generates IR instructions for question operator (?) using unified SWITCH_CHAIN_BLOCK.
This generator has been migrated to use the unified control flow approach: 1. Delegates to ControlFlowChainGenerator for actual IR generation 2. Maintains backward compatibility with existing call sites 3. Uses CONTROL_FLOW_CHAIN with QUESTION_OPERATOR chain type
The Question operator becomes a simple two-case CONTROL_FLOW_CHAIN: - Case 1: if (operand == null) return Boolean(false) - Default: else return operand._isSet()
-
Constructor Summary
ConstructorsConstructorDescriptionQuestionBlockGenerator
(IRContext context, Function<ExprProcessingDetails, List<IRInstr>> rawExprProcessor) -
Method Summary
Modifier and TypeMethodDescriptionapply
(ExprProcessingDetails details) createQuestionBlockForVariable
(ISymbol variableSymbol, String resultName, BasicDetails basicDetails) Create QUESTION_BLOCK for a variable symbol (used by guarded assignment composition).
-
Constructor Details
-
QuestionBlockGenerator
public QuestionBlockGenerator(IRContext context, Function<ExprProcessingDetails, List<IRInstr>> rawExprProcessor)
-
-
Method Details
-
apply
- Specified by:
apply
in interfaceFunction<ExprProcessingDetails,
List<IRInstr>>
-
createQuestionBlockForVariable
public List<IRInstr> createQuestionBlockForVariable(ISymbol variableSymbol, String resultName, BasicDetails basicDetails) Create QUESTION_BLOCK for a variable symbol (used by guarded assignment composition). This method enables composition by allowing other generators to reuse the core question operator logic for variable-based null-safety checking.
-