Class ListLiteralGenerator

java.lang.Object
org.ek9lang.compiler.phase7.generator.AbstractGenerator
org.ek9lang.compiler.phase7.generator.ListLiteralGenerator
All Implemented Interfaces:
Function<ExprProcessingDetails, List<IRInstr>>

public final class ListLiteralGenerator extends AbstractGenerator implements Function<ExprProcessingDetails, List<IRInstr>>
Generates IR instructions for list literal expressions.

Handles the syntax: ["element1", "element2", ...]

IR Generation Strategy:
List literals are desugared into:

  1. List<T> constructor call (default constructor)
  2. Memory management (RETAIN/SCOPE_REGISTER) for list object
  3. For each element:
    • Evaluate element expression
    • Memory management for element
    • Call _addAss(element) mutation operator

Example:
["one", "two"] generates:

_temp1 = CALL List<String>.<init>()
RETAIN _temp1
SCOPE_REGISTER _temp1
_temp2 = LOAD_LITERAL "one"
RETAIN _temp2
SCOPE_REGISTER _temp2
CALL _temp1._addAss(_temp2)
_temp3 = LOAD_LITERAL "two"
RETAIN _temp3
SCOPE_REGISTER _temp3
CALL _temp1._addAss(_temp3)

Memory Management:
- List object retained and registered to current scope
- Each element retained and registered before _addAss call
- No LOAD/STORE between elements (direct operation on constructor result)