Struct rustc_session::Session

source ·
pub struct Session {
Show 24 fields pub target: Target, pub host: Target, pub opts: Options, pub host_tlib_path: Lrc<SearchPath>, pub target_tlib_path: Lrc<SearchPath>, pub parse_sess: ParseSess, pub sysroot: PathBuf, pub io: CompilerIO, incr_comp_session: OneThread<RefCell<IncrCompSession>>, pub cgu_reuse_tracker: CguReuseTracker, pub prof: SelfProfilerRef, pub perf_stats: PerfStats, pub code_stats: CodeStats, optimization_fuel: Lock<OptimizationFuel>, pub print_fuel: AtomicU64, pub jobserver: Client, pub driver_lint_caps: FxHashMap<LintId, Level>, pub ctfe_backtrace: Lock<CtfeBacktrace>, miri_unleashed_features: Lock<Vec<(Span, Option<Symbol>)>>, pub asm_arch: Option<InlineAsmArch>, pub target_features: FxIndexSet<Symbol>, pub unstable_target_features: FxIndexSet<Symbol>, pub cfg_version: &'static str, pub expanded_args: Vec<String>,
}
Expand description

Represents the data associated with a compilation session for a single crate.

Fields§

§target: Target§host: Target§opts: Options§host_tlib_path: Lrc<SearchPath>§target_tlib_path: Lrc<SearchPath>§parse_sess: ParseSess§sysroot: PathBuf§io: CompilerIO

Input, input file path and output file path to this compilation process.

§incr_comp_session: OneThread<RefCell<IncrCompSession>>§cgu_reuse_tracker: CguReuseTracker

Used for incremental compilation tests. Will only be populated if -Zquery-dep-graph is specified.

§prof: SelfProfilerRef

Used by -Z self-profile.

§perf_stats: PerfStats

Some measurements that are being gathered during compilation.

§code_stats: CodeStats

Data about code being compiled, gathered during compilation.

§optimization_fuel: Lock<OptimizationFuel>

Tracks fuel info if -zfuel=crate=n is specified.

§print_fuel: AtomicU64

Always set to zero and incremented so that we can print fuel expended by a crate.

§jobserver: Client

Loaded up early on in the initialization of this Session to avoid false positives about a job server in our environment.

§driver_lint_caps: FxHashMap<LintId, Level>

Cap lint level specified by a driver specifically.

§ctfe_backtrace: Lock<CtfeBacktrace>

Tracks the current behavior of the CTFE engine when an error occurs. Options range from returning the error without a backtrace to returning an error and immediately printing the backtrace to stderr. The Lock is only used by miri to allow setting ctfe_backtrace after analysis when MIRI_BACKTRACE is set. This makes it only apply to miri’s errors and not to all CTFE errors.

§miri_unleashed_features: Lock<Vec<(Span, Option<Symbol>)>>

This tracks where -Zunleash-the-miri-inside-of-you was used to get around a const check, optionally with the relevant feature gate. We use this to warn about unleashing, but with a single diagnostic instead of dozens that drown everything else in noise.

§asm_arch: Option<InlineAsmArch>

Architecture to use for interpreting asm!.

§target_features: FxIndexSet<Symbol>

Set of enabled features for the current target.

§unstable_target_features: FxIndexSet<Symbol>

Set of enabled features for the current target, including unstable ones.

§cfg_version: &'static str

The version of the rustc process, possibly including a commit hash and description.

§expanded_args: Vec<String>

All commandline args used to invoke the compiler, with @file args fully expanded. This will only be used within debug info, e.g. in the pdb file on windows This is mainly useful for other tools that reads that debuginfo to figure out how to call the compiler with the same arguments.

Implementations§

source§

impl Session

source

pub fn timer(&self, what: &'static str) -> VerboseTimingGuard<'_>

source

pub fn time<R>(&self, what: &'static str, f: impl FnOnce() -> R) -> R

Used by -Z self-profile.

source§

impl Session

source

pub fn miri_unleashed_feature(&self, span: Span, feature_gate: Option<Symbol>)

source

pub fn local_crate_source_file(&self) -> Option<PathBuf>

source

fn check_miri_unleashed_features(&self)

source

pub fn finish_diagnostics(&self, registry: &Registry)

Invoked all the way at the end to finish off diagnostics printing.

source

fn emit_future_breakage(&self)

source

pub fn is_test_crate(&self) -> bool

Returns true if the crate is a testing one.

source

pub fn struct_span_warn<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ()>

source

pub fn struct_span_warn_with_expectation<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage>, id: LintExpectationId ) -> DiagnosticBuilder<'_, ()>

source

pub fn struct_span_warn_with_code<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage>, code: DiagnosticId ) -> DiagnosticBuilder<'_, ()>

source

pub fn struct_warn( &self, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ()>

source

pub fn struct_warn_with_expectation( &self, msg: impl Into<DiagnosticMessage>, id: LintExpectationId ) -> DiagnosticBuilder<'_, ()>

source

pub fn struct_span_allow<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ()>

source

pub fn struct_allow( &self, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ()>

source

pub fn struct_expect( &self, msg: impl Into<DiagnosticMessage>, id: LintExpectationId ) -> DiagnosticBuilder<'_, ()>

source

pub fn struct_span_err<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ErrorGuaranteed>

source

pub fn struct_span_err_with_code<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage>, code: DiagnosticId ) -> DiagnosticBuilder<'_, ErrorGuaranteed>

source

pub fn struct_err( &self, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ErrorGuaranteed>

source

pub fn struct_err_with_code( &self, msg: impl Into<DiagnosticMessage>, code: DiagnosticId ) -> DiagnosticBuilder<'_, ErrorGuaranteed>

source

pub fn struct_warn_with_code( &self, msg: impl Into<DiagnosticMessage>, code: DiagnosticId ) -> DiagnosticBuilder<'_, ()>

source

pub fn struct_span_fatal<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, !>

source

pub fn struct_span_fatal_with_code<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage>, code: DiagnosticId ) -> DiagnosticBuilder<'_, !>

source

pub fn struct_fatal( &self, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, !>

source

pub fn span_fatal<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage> ) -> !

source

pub fn span_fatal_with_code<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage>, code: DiagnosticId ) -> !

source

pub fn fatal(&self, msg: impl Into<DiagnosticMessage>) -> !

source

pub fn span_err<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage> ) -> ErrorGuaranteed

source

pub fn span_err_with_code<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage>, code: DiagnosticId )

source

pub fn err(&self, msg: impl Into<DiagnosticMessage>) -> ErrorGuaranteed

source

pub fn create_err<'a>( &'a self, err: impl IntoDiagnostic<'a> ) -> DiagnosticBuilder<'a, ErrorGuaranteed>

source

pub fn create_feature_err<'a>( &'a self, err: impl IntoDiagnostic<'a>, feature: Symbol ) -> DiagnosticBuilder<'a, ErrorGuaranteed>

source

pub fn emit_err<'a>(&'a self, err: impl IntoDiagnostic<'a>) -> ErrorGuaranteed

source

pub fn create_warning<'a>( &'a self, err: impl IntoDiagnostic<'a, ()> ) -> DiagnosticBuilder<'a, ()>

source

pub fn emit_warning<'a>(&'a self, warning: impl IntoDiagnostic<'a, ()>)

source

pub fn create_note<'a>( &'a self, note: impl IntoDiagnostic<'a, Noted> ) -> DiagnosticBuilder<'a, Noted>

source

pub fn emit_note<'a>(&'a self, note: impl IntoDiagnostic<'a, Noted>) -> Noted

source

pub fn create_fatal<'a>( &'a self, fatal: impl IntoDiagnostic<'a, !> ) -> DiagnosticBuilder<'a, !>

source

pub fn emit_fatal<'a>(&'a self, fatal: impl IntoDiagnostic<'a, !>) -> !

source

pub fn err_count(&self) -> usize

source

pub fn has_errors(&self) -> Option<ErrorGuaranteed>

source

pub fn has_errors_or_delayed_span_bugs(&self) -> Option<ErrorGuaranteed>

source

pub fn is_compilation_going_to_fail(&self) -> Option<ErrorGuaranteed>

source

pub fn abort_if_errors(&self)

source

pub fn compile_status(&self) -> Result<(), ErrorGuaranteed>

source

pub fn track_errors<F, T>(&self, f: F) -> Result<T, ErrorGuaranteed>where F: FnOnce() -> T,

source

pub fn span_warn<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage> )

source

pub fn span_warn_with_code<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage>, code: DiagnosticId )

source

pub fn warn(&self, msg: impl Into<DiagnosticMessage>)

source

pub fn delay_span_bug<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<String> ) -> ErrorGuaranteed

Ensures that compilation cannot succeed.

If this function has been called but no errors have been emitted and compilation succeeds, it will cause an internal compiler error (ICE).

This can be used in code paths that should never run on successful compilations. For example, it can be used to create an ErrorGuaranteed (but you should prefer threading through the ErrorGuaranteed from an error emission directly).

If no span is available, use DUMMY_SP.

source

pub fn delay_good_path_bug(&self, msg: impl Into<DiagnosticMessage>)

Used for code paths of expensive computations that should only take place when warnings or errors are emitted. If no messages are emitted (“good path”), then it’s likely a bug.

source

pub fn note_without_error(&self, msg: impl Into<DiagnosticMessage>)

source

pub fn span_note_without_error<S: Into<MultiSpan>>( &self, sp: S, msg: impl Into<DiagnosticMessage> )

source

pub fn struct_note_without_error( &self, msg: impl Into<DiagnosticMessage> ) -> DiagnosticBuilder<'_, ()>

source

pub fn diagnostic(&self) -> &Handler

source

pub fn source_map(&self) -> &SourceMap

source

pub fn enable_internal_lints(&self) -> bool

Returns true if internal lints should be added to the lint store - i.e. if -Zunstable-options is provided and this isn’t rustdoc (internal lints can trigger errors to be emitted under rustdoc).

source

pub fn instrument_coverage(&self) -> bool

source

pub fn instrument_coverage_except_unused_generics(&self) -> bool

source

pub fn instrument_coverage_except_unused_functions(&self) -> bool

source

pub fn is_sanitizer_cfi_enabled(&self) -> bool

source

pub fn is_sanitizer_cfi_canonical_jump_tables_disabled(&self) -> bool

source

pub fn is_sanitizer_cfi_canonical_jump_tables_enabled(&self) -> bool

source

pub fn is_sanitizer_cfi_generalize_pointers_enabled(&self) -> bool

source

pub fn is_sanitizer_cfi_normalize_integers_enabled(&self) -> bool

source

pub fn is_sanitizer_kcfi_enabled(&self) -> bool

source

pub fn is_split_lto_unit_enabled(&self) -> bool

source

pub fn crt_static(&self, crate_type: Option<CrateType>) -> bool

Check whether this compile session and crate type use static crt.

source

pub fn is_wasi_reactor(&self) -> bool

source

pub fn target_can_use_split_dwarf(&self) -> bool

Returns true if the target can use the current split debuginfo configuration.

source

pub fn generate_proc_macro_decls_symbol( &self, stable_crate_id: StableCrateId ) -> String

source

pub fn target_filesearch(&self, kind: PathKind) -> FileSearch<'_>

source

pub fn host_filesearch(&self, kind: PathKind) -> FileSearch<'_>

source

pub fn get_tools_search_paths(&self, self_contained: bool) -> Vec<PathBuf>

Returns a list of directories where target-specific tool binaries are located.

source

pub fn init_incr_comp_session( &self, session_dir: PathBuf, lock_file: Lock, load_dep_graph: bool )

source

pub fn finalize_incr_comp_session(&self, new_directory_path: PathBuf)

source

pub fn mark_incr_comp_session_as_invalid(&self)

source

pub fn incr_comp_session_dir(&self) -> Ref<'_, PathBuf>

source

pub fn incr_comp_session_dir_opt(&self) -> Option<Ref<'_, PathBuf>>

source

pub fn print_perf_stats(&self)

source

pub fn consider_optimizing( &self, get_crate_name: impl Fn() -> Symbol, msg: impl Fn() -> String ) -> bool

We want to know if we’re allowed to do an optimization for crate foo from -z fuel=foo=n. This expends fuel if applicable, and records fuel if applicable.

source

pub fn is_rust_2015(&self) -> bool

Is this edition 2015?

source

pub fn at_least_rust_2018(&self) -> bool

Are we allowed to use features from the Rust 2018 edition?

source

pub fn at_least_rust_2021(&self) -> bool

Are we allowed to use features from the Rust 2021 edition?

source

pub fn at_least_rust_2024(&self) -> bool

Are we allowed to use features from the Rust 2024 edition?

source

pub fn needs_plt(&self) -> bool

Returns true if we should use the PLT for shared library calls.

source

pub fn emit_lifetime_markers(&self) -> bool

Checks if LLVM lifetime markers should be emitted.

source

pub fn diagnostic_width(&self) -> usize

source§

impl Session

source

pub fn verbose(&self) -> bool

source

pub fn print_llvm_stats(&self) -> bool

source

pub fn verify_llvm_ir(&self) -> bool

source

pub fn binary_dep_depinfo(&self) -> bool

source

pub fn mir_opt_level(&self) -> usize

source

pub fn lto(&self) -> Lto

Calculates the flavor of LTO to use for this compilation.

source

pub fn panic_strategy(&self) -> PanicStrategy

Returns the panic strategy for this compile session. If the user explicitly selected one using ‘-C panic’, use that, otherwise use the panic strategy defined by the target.

source

pub fn fewer_names(&self) -> bool

source

pub fn unstable_options(&self) -> bool

source

pub fn is_nightly_build(&self) -> bool

source

pub fn overflow_checks(&self) -> bool

source

pub fn relocation_model(&self) -> RelocModel

source

pub fn code_model(&self) -> Option<CodeModel>

source

pub fn tls_model(&self) -> TlsModel

source

pub fn split_debuginfo(&self) -> SplitDebuginfo

source

pub fn stack_protector(&self) -> StackProtector

source

pub fn must_emit_unwind_tables(&self) -> bool

source

pub fn threads(&self) -> usize

Returns the number of query threads that should be used for this compilation

source

pub fn codegen_units(&self) -> CodegenUnits

Returns the number of codegen units that should be used for this compilation

source

pub fn teach(&self, code: &DiagnosticId) -> bool

source

pub fn edition(&self) -> Edition

Auto Trait Implementations§

§

impl !RefUnwindSafe for Session

§

impl !Send for Session

§

impl !Sync for Session

§

impl Unpin for Session

§

impl !UnwindSafe for Session

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 6120 bytes