mirror of
https://github.com/erg-lang/erg.git
synced 2025-07-24 21:44:46 +00:00
41 lines
967 B
Rust
41 lines
967 B
Rust
use crate::artifact::CompleteArtifact;
|
|
use crate::error::CompileWarnings;
|
|
use crate::hir::*;
|
|
// use crate::erg_common::traits::Stream;
|
|
|
|
#[derive(Debug)]
|
|
pub struct HIROptimizer {}
|
|
|
|
impl HIROptimizer {
|
|
pub fn optimize(hir: HIR) -> CompleteArtifact {
|
|
let mut optimizer = HIROptimizer {};
|
|
optimizer.eliminate_dead_code(hir)
|
|
}
|
|
|
|
fn _fold_constants(&mut self, mut _hir: HIR) -> HIR {
|
|
todo!()
|
|
}
|
|
|
|
fn _eliminate_unused_variables(&mut self, mut _hir: HIR) -> (HIR, CompileWarnings) {
|
|
todo!()
|
|
}
|
|
|
|
fn eliminate_dead_code(&mut self, hir: HIR) -> CompleteArtifact {
|
|
CompleteArtifact::new(
|
|
self.eliminate_discarded_variables(hir),
|
|
CompileWarnings::empty(),
|
|
)
|
|
}
|
|
|
|
/// ```erg
|
|
/// _ = 1
|
|
/// (a, _) = (1, True)
|
|
/// ```
|
|
/// ↓
|
|
/// ```erg
|
|
/// a = 1
|
|
/// ```
|
|
fn eliminate_discarded_variables(&mut self, mut _hir: HIR) -> HIR {
|
|
todo!()
|
|
}
|
|
}
|