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 TastThe typed tree.
types: &'a TypesThe types it points into.
target: &'a TargetInfoWhat is being compiled for, which is where every width and every alignment comes from.
names: &'a mut InternerThe name table.
visibility: VisibilityWhat 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§
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> 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