Record Class LoopCaseData

java.lang.Object
java.lang.Record
org.ek9lang.compiler.backend.jvm.LoopCaseData
Record Components:
loopStart - Label marking the start of the loop (for goto jumps back)
conditionTemplate - IR instructions to evaluate loop condition (re-executed each iteration)
conditionPrimitive - Variable name holding primitive boolean condition result
bodySetup - IR instructions for body setup (assigns loopVariable = current)
valueGuard - nullable: the loop value is usable only when its primitive is true, else the body is skipped (a constraint hole in a constrained range)
body - IR instructions for loop body (user code, shared across all cases)
endCheck - the counter has reached the end: the loop stops before the increment when true
increment - IR instructions for increment (current++ or current--); empty when a progress check steps
progressCheck - nullable: the step and the test that the counter moved toward the end (Time and user-defined range types only); the loop ends when it did not
endLabel - Label to jump to when loop exits (shared across all cases)
loopScopeId - Unique scope ID for this loop (used for label generation)
dispatchCase - Which FOR_RANGE dispatch case (ASCENDING or DESCENDING)

record LoopCaseData(org.objectweb.asm.Label loopStart, List<IRInstr> conditionTemplate, String conditionPrimitive, List<IRInstr> bodySetup, ForRangePolymorphicInstr.ValueGuard valueGuard, List<IRInstr> body, ForRangePolymorphicInstr.EndCheck endCheck, List<IRInstr> increment, ForRangePolymorphicInstr.ProgressCheck progressCheck, org.objectweb.asm.Label endLabel, String loopScopeId, BytecodeGenerationContext.DispatchCase dispatchCase) extends Record
Encapsulates all data needed for generating a FOR_RANGE loop case (ascending or descending).

This record groups the 9 parameters needed for loop generation into a single cohesive unit.