Function call flattening bugfix
This commit is contained in:
parent
572250a4ad
commit
884c71c288
1 changed files with 7 additions and 2 deletions
|
@ -471,19 +471,24 @@ impl Flattener {
|
||||||
Statement::Return(x) => {
|
Statement::Return(x) => {
|
||||||
let result = x.apply_substitution(&temp_substitution)
|
let result = x.apply_substitution(&temp_substitution)
|
||||||
.apply_substitution(&self.substitution);
|
.apply_substitution(&self.substitution);
|
||||||
|
println!("substitutions:\n {:?}", &self.substitution);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
Statement::Definition(var, rhs) => {
|
Statement::Definition(var, rhs) => {
|
||||||
let new_rhs = rhs.apply_substitution(&temp_substitution)
|
let new_rhs = rhs.apply_substitution(&temp_substitution)
|
||||||
.apply_substitution(&self.substitution);
|
.apply_substitution(&self.substitution);
|
||||||
|
let subsvar = self.use_variable(&var);
|
||||||
|
temp_substitution.insert(var.clone(), subsvar.clone());
|
||||||
statements_flattened.push(
|
statements_flattened.push(
|
||||||
Statement::Definition(self.use_variable(&var), new_rhs),
|
Statement::Definition(subsvar, new_rhs),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Statement::Compiler(var, rhs) => {
|
Statement::Compiler(var, rhs) => {
|
||||||
let new_rhs = rhs.apply_substitution(&temp_substitution)
|
let new_rhs = rhs.apply_substitution(&temp_substitution)
|
||||||
.apply_substitution(&self.substitution);
|
.apply_substitution(&self.substitution);
|
||||||
statements_flattened.push(Statement::Compiler(self.use_variable(&var), new_rhs));
|
let subsvar = self.use_variable(&var);
|
||||||
|
temp_substitution.insert(var.clone(), subsvar.clone());
|
||||||
|
statements_flattened.push(Statement::Compiler(subsvar, new_rhs));
|
||||||
}
|
}
|
||||||
Statement::Condition(lhs, rhs) => {
|
Statement::Condition(lhs, rhs) => {
|
||||||
let new_lhs = lhs.apply_substitution(&temp_substitution)
|
let new_lhs = lhs.apply_substitution(&temp_substitution)
|
||||||
|
|
Loading…
Reference in a new issue