Skip to main content

Context

Struct Context 

Source
pub struct Context<'a> {
    pub tast: &'a Tast,
    pub types: &'a Types,
    pub target: &'a TargetInfo,
    pub names: &'a mut Interner,
    pub visibility: Visibility,
}
Expand description

Everything the walk reads, which is a checked translation unit and the target it is for.

The interner is mutable because the walk invents names the program never wrote: the label a string literal is emitted under, and the mangled name of a function-scope static.

Fields§

§tast: &'a Tast

The typed tree.

§types: &'a Types

The types it points into.

§target: &'a TargetInfo

What is being compiled for, which is where every width and every alignment comes from.

§names: &'a mut Interner

The name table.

§visibility: Visibility

What a name that no declaration of it said anything about gets, which is -fvisibility=.

A fact about the compilation rather than about any declaration, which is why it arrives here rather than on the tree: the checker knows what was written and this knows what the command line asked for, and the answer is the first of those where there is one.

Trait Implementations§

Source§

impl<'a> Debug for Context<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> !UnwindSafe for Context<'a>

§

impl<'a> Freeze for Context<'a>

§

impl<'a> RefUnwindSafe for Context<'a>

§

impl<'a> Send for Context<'a>

§

impl<'a> Sync for Context<'a>

§

impl<'a> Unpin for Context<'a>

§

impl<'a> UnsafeUnpin for Context<'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 = !

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

fn try_from(value: U) -> Result<T, !>

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.