Enum Class EdgeKind

java.lang.Object
java.lang.Enum<EdgeKind>
org.ek9lang.compiler.phase5.lockanalysis.EdgeKind
All Implemented Interfaces:
Serializable, Comparable<EdgeKind>, Constable

public enum EdgeKind extends Enum<EdgeKind>
Classifies a call-graph edge by its threading semantics, per EK9_CONCURRENCY_MODEL.md §5.2.

Edge composition is monotonic: SAME_THREAD ∘ SAME_THREAD = SAME_THREAD; any composition involving a CROSS_THREAD edge is CROSS_THREAD. Once a path crosses a thread boundary it stays crossed for the rest of the chain.

  • Enum Constant Details

    • SAME_THREAD

      public static final EdgeKind SAME_THREAD
      Synchronous call. Caller and callee run on the same virtual thread; the callee's stack frame sits above the caller's; MutexLock reentrancy applies.
    • CROSS_THREAD

      public static final EdgeKind CROSS_THREAD
      Call that crosses a thread boundary. Sources are the concurrent-entry-point primitives in ek9-lang: TCP.accept, Signals.register, cat ... | async, UDP stream consumption, and HTTP service operations.
  • Method Details

    • values

      public static EdgeKind[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static EdgeKind valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null
    • composeWith

      public EdgeKind composeWith(EdgeKind next)
      Compose this edge kind with another along a call path.
      Parameters:
      next - the next edge kind in the path
      Returns:
      SAME_THREAD only when both are SAME_THREAD, else CROSS_THREAD