Enum move_ir_types::spec_language_ast::SpecExp
source · [−]pub enum SpecExp {
Constant(CopyableVal_),
StorageLocation(StorageLocation),
GlobalExists {
type_: QualifiedStructIdent,
type_actuals: Vec<Type>,
address: StorageLocation,
},
Dereference(StorageLocation),
Reference(StorageLocation),
Not(Box<SpecExp>),
Binop(Box<SpecExp>, BinOp, Box<SpecExp>),
Update(Box<SpecExp>, Box<SpecExp>),
Old(Box<SpecExp>),
Call(Symbol, Vec<SpecExp>),
}
Expand description
An expression in the specification language
Variants
Constant(CopyableVal_)
A Move constant
StorageLocation(StorageLocation)
A spec language storage location
GlobalExists
Lifting the Move exists operator to a storage location
Dereference(StorageLocation)
Dereference of a storage location (written *s)
Reference(StorageLocation)
Reference to a storage location (written &s)
Not(Box<SpecExp>)
Negation of a boolean expression (written !e),
Binop(Box<SpecExp>, BinOp, Box<SpecExp>)
Binary operators also suported by Move
Update(Box<SpecExp>, Box<SpecExp>)
Update expr (i := 1 inside [])
Old(Box<SpecExp>)
Value of expression evaluated in the state before function enter.
Call(Symbol, Vec<SpecExp>)
Call to a helper function.
Trait Implementations
impl StructuralPartialEq for SpecExp
Auto Trait Implementations
impl RefUnwindSafe for SpecExp
impl Send for SpecExp
impl Sync for SpecExp
impl Unpin for SpecExp
impl UnwindSafe for SpecExp
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
🔬 This is a nightly-only experimental API. (
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more