Statifier.Machine.Content.If.Branch (Statifier v2.0.0)

Copy Markdown View Source

One compiled <if>/<elseif>/<else> partition - a small struct alongside Statifier.Machine.Content.If (Decision 8 of the plan cited on the parent module), parallel to Statifier.Document.If.Branch without being identical to it: this struct carries no c_index of its own (a branch is not itself a dispatchable content node, only its own content is), and its cond is already compiled.

cond is nil for the <else> branch and for a branch with no cond at all - spec 4.5.1. cond_location is the diagnostic span Statifier.Compiler.Expressions.compile/3 used (or would have used) for cond, nil exactly when cond is. content is the branch's own dense, document-order c_index list - never a list of inline nodes - resolved through Statifier.Machine.content/2 at runtime.

Summary

Types

t()

@type t() :: %Statifier.Machine.Content.If.Branch{
  cond: Statifier.Machine.expr() | nil,
  cond_location: Statifier.Parser.Location.t() | nil,
  content: [non_neg_integer()]
}