pub enum Statement {
Declaration {
meta: Meta,
names: NonEmptyVec<VariableName>,
var_type: VariableType,
dimensions: Vec<Expression>,
},
IfThenElse {
meta: Meta,
cond: Expression,
true_index: usize,
false_index: Option<usize>,
},
Return {
meta: Meta,
value: Expression,
},
Substitution {
meta: Meta,
var: VariableName,
op: AssignOp,
rhe: Expression,
},
ConstraintEquality {
meta: Meta,
lhe: Expression,
rhe: Expression,
},
LogCall {
meta: Meta,
args: Vec<LogArgument>,
},
Assert {
meta: Meta,
arg: Expression,
},
}Variants§
Declaration
IfThenElse
Return
Substitution
ConstraintEquality
LogCall
Assert
Implementations§
source§impl Statement
impl Statement
pub fn meta(&self) -> &Meta
pub fn meta_mut(&mut self) -> &mut Meta
pub fn propagate_degrees(&mut self, env: &mut DegreeEnvironment) -> bool
pub fn propagate_values(&mut self, env: &mut ValueEnvironment) -> bool
pub fn propagate_types(&mut self, vars: &Declarations)
Trait Implementations§
source§impl VariableMeta for Statement
impl VariableMeta for Statement
source§fn cache_variable_use(&mut self)
fn cache_variable_use(&mut self)
Compute variables read/written by the node. Must be called before either
of the getters are called. To avoid interior mutability this needs to be
called again whenever the node is mutated in a way that may invalidate
the cached variable use.
source§fn locals_read(&self) -> &VariableUses
fn locals_read(&self) -> &VariableUses
Get the set of variables read by the IR node.
source§fn locals_written(&self) -> &VariableUses
fn locals_written(&self) -> &VariableUses
Get the set of variables written by the IR node.
source§fn signals_read(&self) -> &VariableUses
fn signals_read(&self) -> &VariableUses
Get the set of signals read by the IR node. Note that this does not
include signals belonging to sub-components.
source§fn signals_written(&self) -> &VariableUses
fn signals_written(&self) -> &VariableUses
Get the set of signals written by the IR node. Note that this does not
include signals belonging to sub-components.
source§fn components_read(&self) -> &VariableUses
fn components_read(&self) -> &VariableUses
Get the set of components read by the IR node. Note that a component
read is typically a signal read for a signal exported by the component.
source§fn components_written(&self) -> &VariableUses
fn components_written(&self) -> &VariableUses
Get the set of components written by the IR node. Note that a component
write may either be a component initialization, or a signal write for a
signal exported by the component.
source§fn variables_read<'a>(
&'a self
) -> Box<dyn Iterator<Item = &'a VariableUse> + 'a>
fn variables_read<'a>( &'a self ) -> Box<dyn Iterator<Item = &'a VariableUse> + 'a>
Get the set of variables read by the IR node. Note that this is simply
the union of all locals, signals, and components read by the node.
source§fn variables_written<'a>(
&'a self
) -> Box<dyn Iterator<Item = &'a VariableUse> + 'a>
fn variables_written<'a>( &'a self ) -> Box<dyn Iterator<Item = &'a VariableUse> + 'a>
Get the set of variables written by the IR node. Note that this is
simply the union of all locals, signals, and components written.
source§fn variables_used<'a>(
&'a self
) -> Box<dyn Iterator<Item = &'a VariableUse> + 'a>
fn variables_used<'a>( &'a self ) -> Box<dyn Iterator<Item = &'a VariableUse> + 'a>
Get the set of variables either read or written by the IR node.