pub struct NormalizeInfo {
pub body: Binder<Expr>,
pub inline: bool,
pub rank: usize,
pub hide: bool,
}Expand description
This type represents what we know about a flux-def after normalization, i.e. after “inlining” all or some transitively called flux-defs.
- When
FLUX_SMT_DEFINE_FUN=1is set we inline all polymorphic flux-defs, since they cannot be represented asdefine-funin SMTLIB but leave all monomorphic flux-defs un-inlined. - When the above flag is not set, we replace every flux-def with its (transitively) inlined body
Fields§
§body: Binder<Expr>the actual definition, with the Binder representing the parameters
inline: boolwhether or not this function is inlined (i.e. NOT represented as define-fun)
rank: usizethe rank of this defn in the topological sort of all the flux-defs, needed so
we can specify the define-fun in the correct order, without any “forward”
dependencies which the SMT solver cannot handle
hide: boolwhether or not this function is uninterpreted by default
Trait Implementations§
Source§impl Clone for NormalizeInfo
impl Clone for NormalizeInfo
Source§fn clone(&self) -> NormalizeInfo
fn clone(&self) -> NormalizeInfo
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<'tcx, __D: TyDecoder<'tcx>> Decodable<__D> for NormalizeInfo
impl<'tcx, __D: TyDecoder<'tcx>> Decodable<__D> for NormalizeInfo
Auto Trait Implementations§
impl Freeze for NormalizeInfo
impl RefUnwindSafe for NormalizeInfo
impl Send for NormalizeInfo
impl Sync for NormalizeInfo
impl Unpin for NormalizeInfo
impl UnwindSafe for NormalizeInfo
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more