34 lines
687 B
Rust
34 lines
687 B
Rust
use crate::ir::*;
|
|
use crate::sema;
|
|
|
|
struct LowerState<'a> {
|
|
tyenv: &'a sema::TypeEnv,
|
|
func: &'a sema::Func,
|
|
builder: FuncBuilder,
|
|
control_flow: ControlInput,
|
|
}
|
|
|
|
pub fn lower(tyenv: &sema::TypeEnv, func: &sema::Func) -> Func {
|
|
let mut builder = FuncBuilder::default();
|
|
let entry = builder.intern(Node::Entry);
|
|
|
|
let mut state = LowerState {
|
|
tyenv,
|
|
func,
|
|
builder,
|
|
control_flow: ControlInput(entry, 0),
|
|
};
|
|
|
|
if !func.is_extern && !func.is_inline {
|
|
for case in &func.cases {
|
|
state.lower_case(case);
|
|
}
|
|
}
|
|
|
|
state.builder.build()
|
|
}
|
|
|
|
impl<'a> LowerState<'a> {
|
|
fn lower_case(&mut self) {}
|
|
}
|