summaryrefslogtreecommitdiff
path: root/src/semantic/translate.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/semantic/translate.rs')
-rw-r--r--src/semantic/translate.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/semantic/translate.rs b/src/semantic/translate.rs
index bcbad3a..4a2b6c5 100644
--- a/src/semantic/translate.rs
+++ b/src/semantic/translate.rs
@@ -9,6 +9,7 @@ pub enum Expression {
}
pub struct Translate<F> {
+ pub temp: temp::Temp,
level_counter: usize,
_frametype: ::std::marker::PhantomData<F>,
}
@@ -26,6 +27,7 @@ pub enum Level<'a, F>
impl<F: frame::Frame> Translate<F> {
pub fn new() -> Translate<F> {
Translate {
+ temp: temp::Temp::new(),
level_counter: 0,
_frametype: ::std::marker::PhantomData,
}
@@ -34,13 +36,12 @@ impl<F: frame::Frame> Translate<F> {
pub fn make_level<'a>(
&mut self,
parent: &'a Level<F>,
- name: temp::TempLabel,
formals: Vec<frame::Escape>) -> Level<'a, F> {
let id = self.level_counter;
self.level_counter += 1;
Level::Level {
parent: parent,
- frame: F::new(name, formals),
+ frame: F::new(self.temp.next_label(), formals),
unique_id: id,
}
}