Class PreIntermediateRepresentationChecks

java.lang.Object
org.ek9lang.compiler.CompilerPhase
org.ek9lang.compiler.phase5.PreIntermediateRepresentationChecks
All Implemented Interfaces:
BiFunction<Workspace, CompilerFlags, CompilationPhaseResult>

public class PreIntermediateRepresentationChecks extends CompilerPhase
At this point all templates should be present and all symbols resolved. This check phase is to look more at the flow of the code and see if there are potential errors that could be avoided at compile time, rather than allowing some form of runtime failure.

This phase operates in four stages:

  1. Parallel processing: Each source file is processed by PreIRListener (collecting construct-level metrics and module-level dependency data) and CallGraphCollector (building the program call graph for reachability analysis)
  2. Module quality validation: After all files are processed, module-level quality metrics are validated (coupling E11016, cohesion E11017)
  3. Call graph analysis: Detect test quality issues:
    • E81007: Empty @Test programs (no assertions and no expected output files)
    • E81011: Orphan assertions (not reachable from any @Test)
    • E81012: Production assertions (reachable from non-test programs)
  4. Notification: Notify listeners for each source file