diff --git a/crates/erg_compiler/build_package.rs b/crates/erg_compiler/build_package.rs index 3cd5f9f97..3b5ab6008 100644 --- a/crates/erg_compiler/build_package.rs +++ b/crates/erg_compiler/build_package.rs @@ -253,7 +253,7 @@ impl Buildable ast: AST, mode: &str, ) -> Result, IncompleteArtifact> { - self.build_module(ast, mode) + self.build_root(ast, mode) } fn pop_context(&mut self) -> Option { self.main_builder.pop_context() @@ -316,10 +316,18 @@ impl let artifact = ast_builder .build_ast(src) .map_err(|err| IncompleteArtifact::new(None, err.errors.into(), err.warns.into()))?; - self.build_module(artifact.ast, mode) + self.build_root(artifact.ast, mode) } - pub fn build_module( + pub fn build_module(&mut self) -> Result { + let mut ast_builder = ASTBuilder::new(self.cfg.copy()); + let artifact = ast_builder + .build_ast(self.cfg.input.read()) + .map_err(|err| IncompleteArtifact::new(None, err.errors.into(), err.warns.into()))?; + self.build_root(artifact.ast, "exec") + } + + pub fn build_root( &mut self, mut ast: AST, mode: &str, diff --git a/doc/EN/dev_guide/embedding.md b/doc/EN/dev_guide/embedding.md index 917978de9..510b93f12 100644 --- a/doc/EN/dev_guide/embedding.md +++ b/doc/EN/dev_guide/embedding.md @@ -58,7 +58,20 @@ use erg_compiler::HIRBuilder; fn main() -> Result<(), Box> { let mut builder = HIRBuilder::default(); let artifact = builder.build("print!\"Hello, world!\"", "exec")?; - println!("{}", artifact.hir); + println!("HIR: {}", artifact.object); + Ok(()) +} +``` + +If you also want to resolve module dependencies, please use `PackageBuilder`. + +```rust +use erg_compiler::PackageBuilder; + +fn main() -> Result<(), Box> { + let mut builder = PackageBuilder::default(); + let artifact = builder.build("print! \"Hello, world!\"", "exec")?; + println!("HIR: {}", artifact.object); Ok(()) } ``` diff --git a/doc/JA/dev_guide/embedding.md b/doc/JA/dev_guide/embedding.md index 2b9b6b1b2..adb03ff6f 100644 --- a/doc/JA/dev_guide/embedding.md +++ b/doc/JA/dev_guide/embedding.md @@ -60,7 +60,20 @@ use erg_compiler::HIRBuilder; fn main() -> Result<(), Box> { let mut builder = HIRBuilder::default(); let artifact = builder.build("print! \"Hello, world!\"", "exec")?; - println!("{}", artifact.hir); + println!("HIR: {}", artifact.object); + Ok(()) +} +``` + +モジュールの依存解決も行いたい場合は`PackageBuilder`を使います。 + +```rust +use erg_compiler::PackageBuilder; + +fn main() -> Result<(), Box> { + let mut builder = PackageBuilder::default(); + let artifact = builder.build("print! \"Hello, world!\"", "exec")?; + println!("HIR: {}", artifact.object); Ok(()) } ```