Struct erg_compiler::build_package::PackageBuilder
source · pub struct PackageBuilder<Parser: ASTBuildable = ASTBuilder, Builder: Buildable = HIRBuilder> { /* private fields */ }
Expand description
Resolve dependencies and build a package. This object should be a singleton.
Invariant condition: build_module
must be idempotent.
That is, the only thing that may differ as a result of analyzing the same package is the elapsed time.
Implementations§
source§impl<Parser: ASTBuildable, Builder: Buildable> PackageBuilder<Parser, Builder>
impl<Parser: ASTBuildable, Builder: Buildable> PackageBuilder<Parser, Builder>
pub fn new(cfg: ErgConfig, shared: SharedCompilerResource) -> Self
sourcepub fn new_with_cache(
cfg: ErgConfig,
mod_name: Str,
shared: SharedCompilerResource
) -> Self
pub fn new_with_cache( cfg: ErgConfig, mod_name: Str, shared: SharedCompilerResource ) -> Self
For batch compilation mode, mod_name
of the entry point must be <module>
.
For ELS mode, mod_name
must be the file name of the entry point.
pub fn build( &mut self, src: String, mode: &str ) -> Result<CompleteArtifact, IncompleteArtifact>
pub fn build_module( &mut self, ast: AST, mode: &str ) -> Result<CompleteArtifact, IncompleteArtifact>
Trait Implementations§
source§impl<Parser: ASTBuildable + 'static, Builder: BuildRunnable + 'static> BuildRunnable for PackageBuilder<Parser, Builder>
impl<Parser: ASTBuildable + 'static, Builder: BuildRunnable + 'static> BuildRunnable for PackageBuilder<Parser, Builder>
fn build_module(&mut self) -> Result<CompleteArtifact<T>, IncompleteArtifact<T>>
source§impl<Parser: ASTBuildable, Builder: Buildable> Buildable for PackageBuilder<Parser, Builder>
impl<Parser: ASTBuildable, Builder: Buildable> Buildable for PackageBuilder<Parser, Builder>
fn inherit(cfg: ErgConfig, shared: SharedCompilerResource) -> Self
fn inherit_with_name( cfg: ErgConfig, mod_name: Str, shared: SharedCompilerResource ) -> Self
fn build( &mut self, src: String, mode: &str ) -> Result<CompleteArtifact, IncompleteArtifact>
fn build_from_ast( &mut self, ast: AST, mode: &str ) -> Result<CompleteArtifact<HIR>, IncompleteArtifact<HIR>>
fn pop_context(&mut self) -> Option<ModuleContext>
fn get_context(&self) -> Option<&ModuleContext>
source§impl<Parser: ASTBuildable, Builder: Buildable + ContextProvider> ContextProvider for PackageBuilder<Parser, Builder>
impl<Parser: ASTBuildable, Builder: Buildable + ContextProvider> ContextProvider for PackageBuilder<Parser, Builder>
source§impl<Parser: Debug + ASTBuildable, Builder: Debug + Buildable> Debug for PackageBuilder<Parser, Builder>
impl<Parser: Debug + ASTBuildable, Builder: Debug + Buildable> Debug for PackageBuilder<Parser, Builder>
source§impl<Parser: ASTBuildable, Builder: Buildable> Default for PackageBuilder<Parser, Builder>
impl<Parser: ASTBuildable, Builder: Buildable> Default for PackageBuilder<Parser, Builder>
source§impl<Parser: ASTBuildable, Builder: BuildRunnable> Runnable for PackageBuilder<Parser, Builder>
impl<Parser: ASTBuildable, Builder: BuildRunnable> Runnable for PackageBuilder<Parser, Builder>
type Err = CompileError
type Errs = CompileErrors
const NAME: &'static str = "Erg package builder"
fn new(cfg: ErgConfig) -> Self
fn cfg(&self) -> &ErgConfig
fn cfg_mut(&mut self) -> &mut ErgConfig
fn finish(&mut self)
source§fn initialize(&mut self)
fn initialize(&mut self)
Erase all but immutable information.
fn exec(&mut self) -> Result<ExitStatus, Self::Errs>
fn eval(&mut self, src: String) -> Result<String, Self::Errs>
fn expect_block(&self, src: &str) -> BlockKind
fn input(&self) -> &Input
fn set_input(&mut self, input: Input)
fn start_message(&self) -> String
fn ps1(&self) -> String
fn ps2(&self) -> String
fn quit(&mut self, code: i32) -> !
fn quit_successfully(&mut self, output: BufWriter<StdoutLock<'_>>) -> !
fn run(cfg: ErgConfig) -> ExitStatus
Auto Trait Implementations§
impl<Parser = ASTBuilder, Builder = HIRBuilder> !RefUnwindSafe for PackageBuilder<Parser, Builder>
impl<Parser, Builder> Send for PackageBuilder<Parser, Builder>where Builder: Send,
impl<Parser, Builder> Sync for PackageBuilder<Parser, Builder>where Builder: Sync,
impl<Parser, Builder> Unpin for PackageBuilder<Parser, Builder>where Builder: Unpin,
impl<Parser = ASTBuilder, Builder = HIRBuilder> !UnwindSafe for PackageBuilder<Parser, Builder>
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