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.
Auto Trait Implementations§
impl Freeze for Statement
impl RefUnwindSafe for Statement
impl Send for Statement
impl Sync for Statement
impl Unpin for Statement
impl UnwindSafe for Statement
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more