pub struct Session {
pub dcx: DiagCtxt,
pub evm_version: EvmVersion,
pub language: Language,
pub stop_after: Option<CompilerStage>,
pub emit: BTreeSet<CompilerOutput>,
pub out_dir: Option<PathBuf>,
pub dump: Option<Dump>,
pub pretty_json: bool,
pub jobs: NonZeroUsize,
/* private fields */
}
Expand description
Information about the current compiler session.
Fields§
§dcx: DiagCtxt
The diagnostics context.
evm_version: EvmVersion
EVM version.
language: Language
Source code language.
stop_after: Option<CompilerStage>
Stop execution after the given compiler stage.
emit: BTreeSet<CompilerOutput>
Types of output to emit.
out_dir: Option<PathBuf>
Output directory.
dump: Option<Dump>
Internal state to dump to stdout.
pretty_json: bool
Pretty-print any JSON output.
jobs: NonZeroUsize
Number of threads to use. Already resolved to a non-zero value.
Implementations§
Source§impl Session
impl Session
Sourcepub fn new(dcx: DiagCtxt, source_map: Arc<SourceMap>) -> Self
pub fn new(dcx: DiagCtxt, source_map: Arc<SourceMap>) -> Self
Creates a new session with the given diagnostics context and source map.
Sourcepub fn empty(dcx: DiagCtxt) -> Self
pub fn empty(dcx: DiagCtxt) -> Self
Creates a new session with the given diagnostics context and an empty source map.
Sourcepub fn builder() -> SessionBuilder
pub fn builder() -> SessionBuilder
Creates a new session builder.
Sourcepub fn emitted_diagnostics(&self) -> Option<Result<(), EmittedDiagnostics>>
pub fn emitted_diagnostics(&self) -> Option<Result<(), EmittedDiagnostics>>
Returns Err
with the printed diagnostics if any errors have been emitted.
Returns None
if the underlying emitter is not a human buffer emitter created with
with_buffer_emitter
.
Sourcepub fn source_map(&self) -> &SourceMap
pub fn source_map(&self) -> &SourceMap
Returns a reference to the source map.
Sourcepub fn clone_source_map(&self) -> Arc<SourceMap>
pub fn clone_source_map(&self) -> Arc<SourceMap>
Clones the source map.
Sourcepub fn stop_after(&self, stage: CompilerStage) -> bool
pub fn stop_after(&self, stage: CompilerStage) -> bool
Returns true
if compilation should stop after the given stage.
Sourcepub fn is_sequential(&self) -> bool
pub fn is_sequential(&self) -> bool
Returns true
if parallelism is not enabled.
Sourcepub fn is_parallel(&self) -> bool
pub fn is_parallel(&self) -> bool
Returns true
if parallelism is enabled.
Sourcepub fn do_emit(&self, output: CompilerOutput) -> bool
pub fn do_emit(&self, output: CompilerOutput) -> bool
Returns true
if the given output should be emitted.
Sourcepub fn spawn(&self, f: impl FnOnce() + Send + 'static)
pub fn spawn(&self, f: impl FnOnce() + Send + 'static)
Spawns the given closure on the thread pool or executes it immediately if parallelism is not enabled.
Sourcepub fn join<A, B, RA, RB>(&self, oper_a: A, oper_b: B) -> (RA, RB)
pub fn join<A, B, RA, RB>(&self, oper_a: A, oper_b: B) -> (RA, RB)
Takes two closures and potentially runs them in parallel. It returns a pair of the results from those closures.
Sourcepub fn scope<'scope, OP, R>(&self, op: OP) -> R
pub fn scope<'scope, OP, R>(&self, op: OP) -> R
Executes the given closure in a fork-join scope.
See rayon::scope
for more details.
Sourcepub fn enter<R>(&self, f: impl FnOnce() -> R) -> R
pub fn enter<R>(&self, f: impl FnOnce() -> R) -> R
Sets up session globals on the current thread if they doesn’t exist already and then executes the given closure.
This also calls SessionGlobals::with_source_map
.
Auto Trait Implementations§
impl !Freeze for Session
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> 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
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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