[−][src]Struct rustc_driver::driver::CompileController
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
CompileController is used to customize compilation, it allows compilation to be stopped and/or to call arbitrary code at various points in compilation. It also allows for various flags to be set to influence what information gets collected during compilation.
This is a somewhat higher level controller than a Session - the Session controls what happens in each phase, whereas the CompileController controls whether a phase is run at all and whether other code (from outside the compiler) is run between phases.
Note that if compilation is set to stop and a callback is provided for a given entry point, the callback is called before compilation is stopped.
Expect more entry points to be added in the future.
Fields
after_parse: PhaseController<'a>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
after_expand: PhaseController<'a>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
after_hir_lowering: PhaseController<'a>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
after_analysis: PhaseController<'a>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
compilation_done: PhaseController<'a>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
make_glob_map: MakeGlobMap
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
keep_ast: bool
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
continue_parse_after_error: bool
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
provide: Box<Fn(&mut Providers) + 'a>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Allows overriding default rustc query providers,
after default_provide
has installed them.
provide_extern: Box<Fn(&mut Providers) + 'a>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Same as provide
, but only for non-local crates,
applied after default_provide_extern
.
Methods
impl<'a> CompileController<'a>
[src]
impl<'a> CompileController<'a>
pub fn basic() -> CompileController<'a>
[src]
pub fn basic() -> CompileController<'a>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Trait Implementations
impl<'a> CompilerCalls<'a> for CompileController<'a>
[src]
impl<'a> CompilerCalls<'a> for CompileController<'a>
This implementation makes it easier to create a custom driver when you only want to hook
into callbacks from CompileController
.
Example
let mut controller = CompileController::basic(); controller.after_analysis.callback = Box::new(move |_state| {}); rustc_driver::run_compiler(&[], Box::new(controller), None, None);
fn early_callback(
&mut self,
matches: &Matches,
sopts: &Options,
cfg: &CrateConfig,
descriptions: &Registry,
output: ErrorOutputType
) -> Compilation
[src]
fn early_callback(
&mut self,
matches: &Matches,
sopts: &Options,
cfg: &CrateConfig,
descriptions: &Registry,
output: ErrorOutputType
) -> Compilation
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Hook for a callback early in the process of handling arguments. This will be called straight after options have been parsed but before anything else (e.g., selecting input and output). Read more
fn no_input(
&mut self,
matches: &Matches,
sopts: &Options,
cfg: &CrateConfig,
odir: &Option<PathBuf>,
ofile: &Option<PathBuf>,
descriptions: &Registry
) -> Option<(Input, Option<PathBuf>)>
[src]
fn no_input(
&mut self,
matches: &Matches,
sopts: &Options,
cfg: &CrateConfig,
odir: &Option<PathBuf>,
ofile: &Option<PathBuf>,
descriptions: &Registry
) -> Option<(Input, Option<PathBuf>)>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Called after we extract the input from the arguments if there is no valid input. Gives the implementer an opportunity to supply alternate input (by returning a Some value) or to add custom behaviour for this error such as emitting error messages. Returning None will cause compilation to stop at this point. Read more
fn late_callback(
&mut self,
codegen_backend: &CodegenBackend,
matches: &Matches,
sess: &Session,
cstore: &CStore,
input: &Input,
odir: &Option<PathBuf>,
ofile: &Option<PathBuf>
) -> Compilation
[src]
fn late_callback(
&mut self,
codegen_backend: &CodegenBackend,
matches: &Matches,
sess: &Session,
cstore: &CStore,
input: &Input,
odir: &Option<PathBuf>,
ofile: &Option<PathBuf>
) -> Compilation
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Hook for a callback late in the process of handling arguments. This will be called just before actual compilation starts (and before build_controller is called), after all arguments etc. have been completely handled. Read more
fn build_controller(
self: Box<Self>,
_: &Session,
_: &Matches
) -> CompileController<'a>
[src]
fn build_controller(
self: Box<Self>,
_: &Session,
_: &Matches
) -> CompileController<'a>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fn some_input(
&mut self,
input: Input,
input_path: Option<PathBuf>
) -> (Input, Option<PathBuf>)
[src]
fn some_input(
&mut self,
input: Input,
input_path: Option<PathBuf>
) -> (Input, Option<PathBuf>)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Called after we extract the input from the arguments. Gives the implementer an opportunity to change the inputs or to add some custom input handling. The default behaviour is to simply pass through the inputs. Read more
Auto Trait Implementations
impl<'a> !Send for CompileController<'a>
impl<'a> !Send for CompileController<'a>
impl<'a> !Sync for CompileController<'a>
impl<'a> !Sync for CompileController<'a>
Blanket Implementations
impl<T> From for T
[src]
impl<T> From for T
impl<T, U> Into for T where
U: From<T>,
[src]
impl<T, U> Into for T where
U: From<T>,
impl<T, U> TryFrom for T where
T: From<U>,
[src]
impl<T, U> TryFrom for T where
T: From<U>,
type Error = !
try_from
)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
try_from
)Performs the conversion.
impl<T> Borrow for T where
T: ?Sized,
[src]
impl<T> Borrow for T where
T: ?Sized,
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
try_from
)The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
try_from
)Performs the conversion.
impl<T> BorrowMut for T where
T: ?Sized,
[src]
impl<T> BorrowMut for T where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Any for T where
T: 'static + ?Sized,
[src]
impl<T> Any for T where
T: 'static + ?Sized,
fn get_type_id(&self) -> TypeId
[src]
fn get_type_id(&self) -> TypeId
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
Gets the TypeId
of self
. Read more
impl<E> SpecializationError for E
[src]
impl<E> SpecializationError for E
fn not_found<S, T>(trait_name: &'static str, method_name: &'static str) -> E where
T: ?Sized,
[src]
fn not_found<S, T>(trait_name: &'static str, method_name: &'static str) -> E where
T: ?Sized,
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Create an error for a missing method specialization. Defaults to panicking with type, trait & method names. S
is the encoder/decoder state type, T
is the type being encoded/decoded, and the arguments are the names of the trait and method that should've been overridden. Read more
impl<T> Erased for T
[src]
impl<T> Erased for T
impl<T> Send for T where
T: ?Sized,
[src]
impl<T> Send for T where
T: ?Sized,
impl<T> Sync for T where
T: ?Sized,
[src]
impl<T> Sync for T where
T: ?Sized,
impl<T> Erased for T
impl<T> Erased for T
impl<T> MaybeResult for T
[src]
impl<T> MaybeResult for T
fn from_ok(x: T) -> T
[src]
fn from_ok(x: T) -> T
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fn map_same<F>(self, f: F) -> T where
F: FnOnce(T) -> T,
[src]
fn map_same<F>(self, f: F) -> T where
F: FnOnce(T) -> T,
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
impl<'a, T> Captures for T where
T: ?Sized,
[src]
impl<'a, T> Captures for T where
T: ?Sized,