mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-28 20:14:45 +00:00
refactor: Planner -> PackageBuilder
This commit is contained in:
parent
d13c0e959d
commit
450eafe8aa
3 changed files with 129 additions and 29 deletions
|
@ -11,6 +11,7 @@ use erg_common::traits::{ExitStatus, Runnable, Stream};
|
|||
use erg_parser::ast::VarName;
|
||||
|
||||
use crate::artifact::{CompleteArtifact, ErrorArtifact};
|
||||
use crate::build_package::PackageBuilder;
|
||||
use crate::codegen::PyCodeGenerator;
|
||||
use crate::context::{Context, ContextProvider};
|
||||
use crate::desugar_hir::HIRDesugarer;
|
||||
|
@ -19,7 +20,6 @@ use crate::hir::Expr;
|
|||
use crate::link_hir::HIRLinker;
|
||||
use crate::module::SharedCompilerResource;
|
||||
use crate::optimize::HIROptimizer;
|
||||
use crate::plan::Planner;
|
||||
use crate::ty::codeobj::CodeObj;
|
||||
use crate::varinfo::VarInfo;
|
||||
|
||||
|
@ -112,7 +112,7 @@ impl AccessKind {
|
|||
#[derive(Debug)]
|
||||
pub struct Compiler {
|
||||
pub cfg: ErgConfig,
|
||||
planner: Planner,
|
||||
builder: PackageBuilder,
|
||||
shared: SharedCompilerResource,
|
||||
code_generator: PyCodeGenerator,
|
||||
}
|
||||
|
@ -132,7 +132,7 @@ impl Runnable for Compiler {
|
|||
let shared = SharedCompilerResource::new(cfg.copy());
|
||||
Self {
|
||||
shared: shared.clone(),
|
||||
planner: Planner::new(cfg.copy(), shared),
|
||||
builder: PackageBuilder::new(cfg.copy(), shared),
|
||||
code_generator: PyCodeGenerator::new(cfg.copy()),
|
||||
cfg,
|
||||
}
|
||||
|
@ -151,13 +151,13 @@ impl Runnable for Compiler {
|
|||
fn finish(&mut self) {}
|
||||
|
||||
fn initialize(&mut self) {
|
||||
self.planner.builder.initialize();
|
||||
self.builder.initialize();
|
||||
self.code_generator.clear();
|
||||
// .mod_cache will be initialized in .builder
|
||||
}
|
||||
|
||||
fn clear(&mut self) {
|
||||
self.planner.builder.clear();
|
||||
self.builder.clear();
|
||||
self.code_generator.clear();
|
||||
}
|
||||
|
||||
|
@ -186,15 +186,15 @@ impl Runnable for Compiler {
|
|||
|
||||
impl ContextProvider for Compiler {
|
||||
fn dir(&self) -> Dict<&VarName, &VarInfo> {
|
||||
self.planner.builder.dir()
|
||||
self.builder.dir()
|
||||
}
|
||||
|
||||
fn get_receiver_ctx(&self, receiver_name: &str) -> Option<&Context> {
|
||||
self.planner.builder.get_receiver_ctx(receiver_name)
|
||||
self.builder.get_receiver_ctx(receiver_name)
|
||||
}
|
||||
|
||||
fn get_var_info(&self, name: &str) -> Option<(&VarName, &VarInfo)> {
|
||||
self.planner.builder.get_var_info(name)
|
||||
self.builder.get_var_info(name)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -262,7 +262,7 @@ impl Compiler {
|
|||
src: String,
|
||||
mode: &str,
|
||||
) -> Result<CompleteArtifact, ErrorArtifact> {
|
||||
let artifact = self.planner.build(src, mode)?;
|
||||
let artifact = self.builder.build(src, mode)?;
|
||||
let linker = HIRLinker::new(&self.cfg, &self.shared.mod_cache);
|
||||
let hir = linker.link(artifact.object);
|
||||
let hir = HIRDesugarer::desugar(hir);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue