pub struct EncapsulatingLoweringContext<'db> {
    pub db: &'db dyn LoweringGroup,
    pub semantic_function_id: FunctionWithBodyId,
    pub function_body: Arc<FunctionBody>,
    pub semantic_defs: UnorderedHashMap<VarId, Variable>,
    pub expr_formatter: ExprFormatter<'db>,
    pub block_usages: BlockUsages,
    pub lowerings: OrderedHashMap<ExprId, FlatLowered>,
}
Expand description

Lowering context for the encapsulating semantic function. Each semantic function may generate multiple lowered functions. This context is common to all the generated lowered functions of an encapsulating semantic function.

Fields§

§db: &'db dyn LoweringGroup§semantic_function_id: FunctionWithBodyId

Id for the current function being lowered.

§function_body: Arc<FunctionBody>

Semantic model for current function body.

§semantic_defs: UnorderedHashMap<VarId, Variable>

Definitions encountered for semantic variables.

§expr_formatter: ExprFormatter<'db>

Expression formatter of the free function.

§block_usages: BlockUsages

Block usages for the entire encapsulating function.

§lowerings: OrderedHashMap<ExprId, FlatLowered>

Lowerings of generated functions.

Implementations§

source§

impl<'db> EncapsulatingLoweringContext<'db>

source

pub fn new( db: &'db dyn LoweringGroup, semantic_function_id: FunctionWithBodyId ) -> Maybe<Self>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T0, T1, E, TRewriter> SemanticRewriter<(T0, T1), E> for TRewriter
where TRewriter: SemanticRewriter<T0, E> + SemanticRewriter<T1, E>,

source§

fn rewrite(&mut self, value: (T0, T1)) -> Result<(T0, T1), E>

source§

impl<T, E, TRewriter> SemanticRewriter<Box<T>, E> for TRewriter
where T: Clone, TRewriter: SemanticRewriter<T, E>,

source§

fn rewrite(&mut self, value: Box<T>) -> Result<Box<T>, E>

source§

impl<K, V, E, TRewriter> SemanticRewriter<HashMap<K, V>, E> for TRewriter
where K: Eq + Hash, TRewriter: SemanticRewriter<K, E> + SemanticRewriter<V, E>,

source§

fn rewrite(&mut self, value: HashMap<K, V>) -> Result<HashMap<K, V>, E>

source§

impl<T, E, TRewriter> SemanticRewriter<Option<T>, E> for TRewriter
where TRewriter: SemanticRewriter<T, E>,

source§

fn rewrite(&mut self, value: Option<T>) -> Result<Option<T>, E>

source§

impl<T, E, TRewriter, E2> SemanticRewriter<Result<T, E2>, E> for TRewriter
where TRewriter: SemanticRewriter<T, E>,

source§

fn rewrite(&mut self, value: Result<T, E2>) -> Result<Result<T, E2>, E>

source§

impl<T, E, TRewriter> SemanticRewriter<Vec<T>, E> for TRewriter
where TRewriter: SemanticRewriter<T, E>,

source§

fn rewrite(&mut self, value: Vec<T>) -> Result<Vec<T>, E>

source§

impl<T, E, TRewriter> SemanticRewriter<VecDeque<T>, E> for TRewriter
where TRewriter: SemanticRewriter<T, E>,

source§

fn rewrite(&mut self, value: VecDeque<T>) -> Result<VecDeque<T>, E>

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> Upcast<T> for T
where T: ?Sized,

source§

fn upcast(&self) -> &T

source§

impl<T> UpcastMut<T> for T
where T: ?Sized,

source§

fn upcast_mut(&mut self) -> &mut T