mirror of
https://github.com/Dummi26/mers.git
synced 2025-03-10 05:43:53 +01:00
fix bug when redeclaring a variable 3 times in the same scope
This commit is contained in:
parent
1384222b59
commit
6f36ded38c
@ -59,11 +59,13 @@ pub type Info = info::Info<Local>;
|
||||
#[derive(Default, Clone, Debug)]
|
||||
pub struct Local {
|
||||
vars: HashMap<String, (usize, usize)>,
|
||||
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> {
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user