Class FunctionImplementationLinker

java.lang.Object
org.ek9lang.compiler.phase5.callgraph.FunctionImplementationLinker

public final class FunctionImplementationLinker extends Object
Links an abstract function to every concrete function that implements it, so whatever reaches the abstract one - a call through a variable of its type, or a concurrent-entry-point mark on it - reaches the bodies that can run. The function twin of PolymorphicOverrideLinker.

Why this is needed. An async stage marks the stream's ELEMENT type as the concurrent entry point. With one worker function in cat [worker] that type is the worker itself; with two different workers it is their common abstract supertype (task), which has no body and, until this edge, no successor - so neither worker's body was checked by E08251 and two workers writing one captured value compiled clean (2026-10-31, cycle-collector-evidence/2026-10-31-e08251-inconsistency.md).

Every implementation, not RTA. A named function always exists (it is never "allocated"), and a dynamic function exists where it is written; so, unlike an override on a class nothing constructs, no implementation can be left out as unreachable. Fail closed.

  • Constructor Details

  • Method Details

    • link

      public void link()
      Add a polymorphic edge from each abstract function to each concrete function that implements it.