charon_lib::transform::ctx

Struct TransformCtx

source
pub struct TransformCtx {
    pub options: TranslateOptions,
    pub translated: TranslatedCrate,
    pub errors: RefCell<ErrorCtx>,
}
Expand description

Simpler context used for rustc-independent code transformation. This only depends on rustc for its error reporting machinery.

Fields§

§options: TranslateOptions

The options that control transformation.

§translated: TranslatedCrate

The translated data.

§errors: RefCell<ErrorCtx>

Context for tracking and reporting errors.

Implementations§

source§

impl<'ctx> TransformCtx

source

pub(crate) fn has_errors(&self) -> bool

source

pub(crate) fn span_err(&self, span: Span, msg: &str) -> Error

Span an error and register the error.

source

pub(crate) fn opacity_for_name(&self, name: &Name) -> ItemOpacity

source

pub(crate) fn with_def_id<F, T>( &mut self, def_id: impl Into<AnyTransId>, def_id_is_local: bool, f: F, ) -> T
where F: FnOnce(&mut Self) -> T,

source

pub(crate) fn for_each_body(&mut self, f: impl FnMut(&mut Self, &mut Body))

Mutably iterate over the bodies. Warning: we replace each body with Err(Opaque) while inspecting it so we can keep access to the rest of the crate.

source

pub(crate) fn for_each_fun_decl( &mut self, f: impl FnMut(&mut Self, &mut FunDecl), )

Mutably iterate over the function declarations. Warning: each inspected fundecl becomes inaccessible from ctx during the course of this function.

source

pub fn for_each_item_mut( &mut self, f: impl for<'a> FnMut(&'a mut Self, AnyTransItemMut<'a>), )

Iterate mutably over all items, keeping access to self. To make this work, we move out each item before iterating over it.

Trait Implementations§

source§

impl Display for TransformCtx

source§

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

Formats the value using the given formatter. Read more
source§

impl<'a> IntoFormatter for &'a TransformCtx

source§

type C = FmtCtx<'a>

source§

fn into_fmt(self) -> Self::C

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
§

impl<I, T> ExtractContext<I, ()> for T

§

fn extract_context(self, _original_input: I)

Given the context attached to a nom error, and given the original input to the nom parser, extract more the useful context information. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Indentable for T
where T: Display,

§

fn indented(self, indent: &str) -> Indented<'_, Self>

Wrap this object so that its Display representation is indented with the given indent. Each non-empty line of the formatted output will be prefixed with the indent. Read more
§

fn indented_skip_initial(self, indent: &str) -> IndentedSkipIntial<'_, Self>

Wrap this object so that its Display representation is indented with the given indent. Each non-empty line except for the first of the formatted output will be prefixed with the indent. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

source§

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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
§

impl<I> RecreateContext<I> for I

§

fn recreate_context(_original_input: I, tail: I) -> I

Given the original input, as well as the context reported by nom, recreate a context in the original string where the error occurred. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more