Uses of Package
org.ek9lang.compiler.phase5
Packages that use org.ek9lang.compiler.phase5
Package
Description
I - PRE Intermediate Representation generation checks.
Call graph infrastructure for EK9 compiler static analysis.
Contains critical general components used in the
Ek9Compiler listeners.-
Classes in org.ek9lang.compiler.phase5 used by org.ek9lang.compiler.phase5ClassDescriptionOnce an expression has been assessed as being simple enough to process, this consumer is called to mark the appropriate symbol(s) used in the expression as safe if the appropriate methods are called.THE registrations of every application in the program (EK9_NATIVE_CYCLE_COLLECTOR_DESIGN.md §13.11): each
register X() as Y with aspect of A()of every general and service application.THE record of which constructor parameters a constructor KEEPS as a closeable property, and the deferred verdict on every construction that hands such a parameter a value that is not new (R4 of the fresh-store rule, E81062).What a construction does with the argument it is given at one position - decided only after every source has been walked (CloseableArgumentKeeping.check()).A variable of one callable's body - one of its parameters, or a local that may refer to the same object - compared by identity.Tracks cognitive complexity within functions/methods/operators.Tracks method-field relationships to calculate LCOM4 (Lack of Cohesion of Methods v4).Designed to give a broad indication of complexity, this is not true pure Cyclometric Complexity.One popped region: its total complexity, and how much of that came from expressions.Finds all concrete (non-abstract) subtypes of a given abstract aggregate type.The per-construct obligation rollup accumulated during the phase-5 walk of one callable body, then squirrelled asOBLIGATIONS_TOTAL/DISCHARGED/UNDISCHARGEDat construct exit (docs/tooling/EK9_SYMBOLIC_SCANNER_IMPLEMENTATION_SPEC.md §2.1/§2.4).THE marker of what a construct's pre-flow and control expression prove safe for Optional / Result / Iterator access (E08030) - one class forif,switch,try,while,forand the ternary (it was six near-identical subclasses).THE look-ahead of the safe-access proofs (E08030): may anything in a region of source - read AHEAD of the walk - change the object a proven Optional / Result / Iterator refers to (ProvenContainerChange)? Use this for any proof that must judge code it has not walked yet; never a private scan.Tracks efferent coupling (Ce) - the number of external types a construct depends on.Tracks function/method/constructor parameter signatures for data clump detection (E11053).An immutable (type, name) pair from a parameter, ordered for deterministic comparison.One callable's parameter signature for data clump analysis.Why an obligation is considered discharged (proven safe) by an existing analysis, orDischargeReason.UNDISCHARGEDwhen no analysis proves it — the discharge-detection order of docs/tooling/EK9_SYMBOLIC_SCANNER_IMPLEMENTATION_SPEC.md §2.3.Tracks complexity of coalescing expression trees with depth-based multiplier.Result of field classification for an aggregate.Tracks injection counts within functions/methods/operators.THE components of an application that sit on a circular injection chain (E08190), asInjectionCycleOrErrorfound them - and THE rule that E08190 suppresses E08200 for them (Steve, 2026-10-11): in a cycle no registration order works, so "reorder registrations" is advice that cannot be followed.A stack of integer counters, one per nested function/method/operator scope, accumulated during AST traversal.Tracks literal occurrences across files for repeated magic literal detection (E11065).One recorded occurrence of a literal.Tracks module-level cohesion by recording constructs and their intra-module type references.Tracks module-level efferent coupling (Ce) - the number of distinct external modules that a module depends on.THE module-to-ErrorListenerlookup every module-level check takes (coupling, cohesion, size, data clumps, magic literals), besidecallgraph/CallableErrorListenerLookup, which does the same for a callable.What PRE_IR_CHECKS needs, collected during Walk 1 (byPreIRListener, every source in parallel), to decide the E08090 verdicts FULL_RESOLUTION deferred (item 5): every local markedNOT_REFERENCED_DEFERRED- initialised by a call, afterwards only mutated in place, never read - with the expression it was initialised by (MutatedOnlyVariableOrError); every user method, operator, function and dynamic function with a returning variable, with each expression that variable is made to REFER to (its initialiser, every pointer assignment (pre-flows included), and through an arm-shaped value the returning variable it yields), soReceiverInteriorReturnscan derive whether a method returns (part of) its receiver andCloseableReturnOrErrorcan require a closeable return to be new - both readingReturnSourceKind. Shared across the parallel walk, so the queues are concurrent; the per-source state is in aMutatedOnlyVariables.Collector.One source's collection.A deferred local and the expression it was initialised by.A user method, operator, function or dynamic function with a returning variable, and every expression that variable is made to refer to.Tracks nesting depth within functions/methods/operators.A single contract/partiality obligation found in a construct body, tagged with the analysis (if any) that discharges it (docs/tooling/EK9_SYMBOLIC_SCANNER_IMPLEMENTATION_SPEC.md §2.1).The taxonomy of contract/partiality obligations the census counts, from what already exists in the language and analysis (docs/tooling/EK9_SYMBOLIC_SCANNER_IMPLEMENTATION_SPEC.md §2.2).THE compile-time check that a hand-written<=>orders every two SET values of its type (E07188; Steve, 2026-10-21, sameness stock-take 4.4: "This is a closed system and we already have code that detects the subtypes").What makes one callable's Integer result partial, where the walk found it.Used as a base for a range of constructs that can be expressions.THE places in source where code of the program's own may run (D66) - what is notpureand not a concrete built-in - and what each can reach (Reach).One place where code of the program's own may run: what it reaches, and whether it changes the names it is given in place (an in-place write, an iteration) rather than handing them to a call.THE property-type graph: which types an object of a given type can reach through its properties.The three kinds of node - see the class javadoc.One node, keyed by kind and fully qualified type name (value equality, as the shared Tarjan requires).The size of the part of the graph that was reached - what the linearity test asserts on.The two whole-program facts the graph needs: the concrete subtypes of a type, and every aggregate.THE reading of whether something may change the OBJECT an Optional / Result / Iterator variable refers to, so that a proof that itsget(),ok(),error()ornext()is safe (E08030) no longer holds: D66 ("a call that is not pure forgets what it can reach", Steve 2026-10-21) applied to the safe-access proofs.THE injections that can run when the given callables run - transitively, through the phase-5 call graph: an injection (name as T!) in a body the roots reach, or a property injection of a type they construct (a property's injection belongs to its type and runs wherever the type is constructed).THE kinds of what a callable's returning variable is made to refer to - one of theMutatedOnlyVariables.ReturningCallable.sources()collected in Walk 1.Marks specific types of variable of specific types (generic Result/Option) in a manner that enables the compiler to check if access to certain methods is safe.Tests specific types of variable of specific types (generic Result/Option) in a manner that enables the compiler to check if access to certain methods is safe.THE shared "which of Result, Optional or Iterator is this symbol" (the containers whose unwrapping methodok()/error(),get()ornext()must be preceded by a check, E08030), and the three-way dispatch ontoSymbolsAndScopes' record, is-safe and mark operations.The container a symbol's type is a parameterisation of.Tracks statement counts within functions/methods/operators.THE phase-5 reading of a STORE: a statement that makes a variable, property or returning variable refer to the value an expression evaluates to.Result of analyzing trait implementation for potential missing 'by' delegation. -
Classes in org.ek9lang.compiler.phase5 used by org.ek9lang.compiler.phase5.callgraphClassDescriptionFinds all concrete (non-abstract) subtypes of a given abstract aggregate type.
-
Classes in org.ek9lang.compiler.phase5 used by org.ek9lang.compiler.supportClassDescriptionFinds all concrete (non-abstract) subtypes of a given abstract aggregate type.