Struct ExpandProgramPass

Source
pub(super) struct ExpandProgramPass<'a> {
    pub(super) program: &'a Program,
}
Expand description

Expand frontend modules by evaluating meta constructs.

This is the first executable compiler pass after module resolution. It resolves meta expressions and template expansion so later passes consume one concrete runtime-facing AST shape.

Input: parsed frontend Program. Output: expanded frontend Program. Pass name: meta.expand_program.

Fields§

§program: &'a Program

Parsed program to expand.

Trait Implementations§

Source§

impl<'a> Pass for ExpandProgramPass<'a>

Source§

const NAME: &'static str = "meta.expand_program"

Stable pass name used for stats and diagnostics.
Source§

type In = ()

Input value consumed by this pass.
Source§

type Out = Program

Output value produced by this pass.
Source§

type Error = MetaEvalError

Error type emitted by this pass.
Source§

fn run( &mut self, _input: Self::In, _cx: &mut PassContext, ) -> Result<Self::Out, Self::Error>

Execute one pass invocation.

Auto Trait Implementations§

§

impl<'a> Freeze for ExpandProgramPass<'a>

§

impl<'a> RefUnwindSafe for ExpandProgramPass<'a>

§

impl<'a> Send for ExpandProgramPass<'a>

§

impl<'a> Sync for ExpandProgramPass<'a>

§

impl<'a> Unpin for ExpandProgramPass<'a>

§

impl<'a> UnwindSafe for ExpandProgramPass<'a>

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<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

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>,

Source§

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.