Skip to content

Commit

Permalink
chore: add PackageBuilder::build_module
Browse files Browse the repository at this point in the history
  • Loading branch information
mtshiba committed Nov 6, 2023
1 parent 21c937e commit b87c075
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 5 deletions.
14 changes: 11 additions & 3 deletions crates/erg_compiler/build_package.rs
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ impl<ASTBuilder: ASTBuildable, HIRBuilder: Buildable> Buildable
ast: AST,
mode: &str,
) -> Result<CompleteArtifact<crate::hir::HIR>, IncompleteArtifact<crate::hir::HIR>> {
self.build_module(ast, mode)
self.build_root(ast, mode)
}
fn pop_context(&mut self) -> Option<ModuleContext> {
self.main_builder.pop_context()
Expand Down Expand Up @@ -316,10 +316,18 @@ impl<ASTBuilder: ASTBuildable, HIRBuilder: Buildable>
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<CompleteArtifact, IncompleteArtifact> {
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,
Expand Down
15 changes: 14 additions & 1 deletion doc/EN/dev_guide/embedding.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,20 @@ use erg_compiler::HIRBuilder;
fn main() -> Result<(), Box<dyn std::error::Error>> {
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<dyn std::error::Error>> {
let mut builder = PackageBuilder::default();
let artifact = builder.build("print! \"Hello, world!\"", "exec")?;
println!("HIR: {}", artifact.object);
Ok(())
}
```
Expand Down
15 changes: 14 additions & 1 deletion doc/JA/dev_guide/embedding.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,20 @@ use erg_compiler::HIRBuilder;
fn main() -> Result<(), Box<dyn std::error::Error>> {
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<dyn std::error::Error>> {
let mut builder = PackageBuilder::default();
let artifact = builder.build("print! \"Hello, world!\"", "exec")?;
println!("HIR: {}", artifact.object);
Ok(())
}
```
Expand Down

0 comments on commit b87c075

Please sign in to comment.