Expand description

Intermediate representation objects after lowering from semantic. This representation is SSA (static single-assignment): each variable is defined before usage and assigned once. It is also normal form: each function argument is a variable, rather than a compound expression.

Re-exports

pub use blocks::BlockId;

Modules

Structs

A block of statements. Unlike StructuredBlock, this has no reference information, and no panic ending.
A statement that calls a user function.
A statement that jumps to another block. If that block ends with a BlockEnd::CallSite, the flow returns to the statement following this one.
A statement that construct a variant of an enum with a single argument, and binds it to a variable.
A statement that binds a literal value to a variable.
A statement that matches an enum, and “calls” a possibly different block for each branch.
A statement that calls an extern function with branches, and “calls” a possibly different block for each branch.
A statement that constructs a struct (tuple included) into a new variable.
A statement that destructures a struct (tuple included), introducing its elements as new variables.
A block of statements. Each block gets inputs and outputs, and is composed of a linear sequence of statements.
Lowered variable representation.

Enums

Describes what happens to the program flow at the end of a FlatBlock.
Lowered statement.
Describes what happens to the program flow at the end of a StructuredBlock.

Type Definitions