scope is now properly handled in expect cases

This commit is contained in:
Kasey White 2023-02-14 12:28:16 -05:00 committed by Kasey
parent d8ff9e23a4
commit b7fa57027a
1 changed files with 17 additions and 4 deletions

View File

@ -714,21 +714,28 @@ impl<'a> CodeGenerator<'a> {
*clause_properties.is_complex_clause() = true; *clause_properties.is_complex_clause() = true;
let clause_guard_name = format!("__clause_guard_{}", self.id_gen.next()); let clause_guard_name = format!("__clause_guard_{}", self.id_gen.next());
let mut clause_guard_scope = scope.clone();
clause_guard_scope.push(self.id_gen.next());
clause_guard_vec.push(Air::Let { clause_guard_vec.push(Air::Let {
scope: scope.clone(), scope: clause_guard_scope.clone(),
name: clause_guard_name.clone(), name: clause_guard_name.clone(),
}); });
handle_clause_guard(clause_guard, &mut clause_guard_vec, scope.clone()); handle_clause_guard(
clause_guard,
&mut clause_guard_vec,
clause_guard_scope.clone(),
);
clause_guard_vec.push(Air::ClauseGuard { clause_guard_vec.push(Air::ClauseGuard {
scope: scope.clone(), scope: clause_guard_scope.clone(),
subject_name: clause_guard_name, subject_name: clause_guard_name,
tipo: bool(), tipo: bool(),
}); });
clause_guard_vec.push(Air::Bool { clause_guard_vec.push(Air::Bool {
scope: scope.clone(), scope: clause_guard_scope.clone(),
value: true, value: true,
}); });
@ -1875,6 +1882,9 @@ impl<'a> CodeGenerator<'a> {
pattern_vec.append(values); pattern_vec.append(values);
let mut scope = scope;
scope.push(self.id_gen.next());
pattern_vec.push(Air::AssertConstr { pattern_vec.push(Air::AssertConstr {
scope: scope.clone(), scope: scope.clone(),
constr_index: index, constr_index: index,
@ -2125,6 +2135,9 @@ impl<'a> CodeGenerator<'a> {
pattern_vec.append(value_vec); pattern_vec.append(value_vec);
let mut scope = scope;
scope.push(self.id_gen.next());
pattern_vec.push(Air::AssertConstr { pattern_vec.push(Air::AssertConstr {
scope: scope.clone(), scope: scope.clone(),
constr_index: index, constr_index: index,