refactor: Planner -> PackageBuilder

This commit is contained in:
Shunsuke Shibayama 2023-10-08 14:06:42 +09:00
parent d13c0e959d
commit 450eafe8aa
3 changed files with 129 additions and 29 deletions

View file

@ -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);