diff --git a/mers_lib/src/program/parsed/mod.rs b/mers_lib/src/program/parsed/mod.rs index 7f54117..3aaa0ff 100755 --- a/mers_lib/src/program/parsed/mod.rs +++ b/mers_lib/src/program/parsed/mod.rs @@ -59,11 +59,13 @@ pub type Info = info::Info; #[derive(Default, Clone, Debug)] pub struct Local { vars: HashMap, + vars_count: usize, } impl info::Local for Local { type VariableIdentifier = String; type VariableData = (usize, usize); fn init_var(&mut self, id: Self::VariableIdentifier, value: Self::VariableData) { + self.vars_count += 1; self.vars.insert(id, value); } fn get_var(&self, id: &Self::VariableIdentifier) -> Option<&Self::VariableData> { diff --git a/mers_lib/src/program/parsed/variable.rs b/mers_lib/src/program/parsed/variable.rs index 47c4650..4b06e82 100755 --- a/mers_lib/src/program/parsed/variable.rs +++ b/mers_lib/src/program/parsed/variable.rs @@ -26,7 +26,7 @@ impl MersStatement for Variable { self.var.clone(), ( info.scopes.len() - 1, - info.scopes.last().unwrap().vars.len(), + info.scopes.last().unwrap().vars_count, ), ) } @@ -35,6 +35,7 @@ impl MersStatement for Variable { is_init: comp.is_init, is_ref: comp.is_init || self.is_ref, var: if let Some(v) = info.get_var(&self.var) { + eprintln!("Var '{}': {:?}", self.var, v); *v } else { return Err(format!("No variable named '{}' found!", self.var));