Fix scheduling statements that don't create bindings (#40)

Ensure that definitions are added even if no var is being defined.

Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
This commit is contained in:
Anand Krishnamoorthi
2023-11-09 16:24:43 -08:00
committed by GitHub
parent 0af8b6ea12
commit 02c6c6b827
2 changed files with 21 additions and 2 deletions
+19 -2
View File
@@ -776,12 +776,21 @@ impl<'a> Analyzer<'a> {
)?;
self.process_comprs(&comprs[..], scope, first_use, &mut used_vars)?;
let check_first_use = *op == AssignOp::ColEq;
for var in self.gather_assigned_vars(lhs, scope, check_first_use, first_use)? {
let assigned_vars =
self.gather_assigned_vars(lhs, scope, check_first_use, first_use)?;
for var in &assigned_vars {
definitions.push(Definition {
var,
used_vars: used_vars.clone(),
});
}
if assigned_vars.is_empty() {
definitions.push(Definition {
var: "",
used_vars: used_vars.clone(),
});
}
}
{
let (mut used_vars, comprs) = Self::gather_used_vars_comprs_index_vars(
@@ -792,12 +801,20 @@ impl<'a> Analyzer<'a> {
)?;
let check_first_use = false;
self.process_comprs(&comprs[..], scope, first_use, &mut used_vars)?;
for var in self.gather_assigned_vars(rhs, scope, check_first_use, first_use)? {
let assigned_vars =
self.gather_assigned_vars(rhs, scope, check_first_use, first_use)?;
for var in &assigned_vars {
definitions.push(Definition {
var,
used_vars: used_vars.clone(),
});
}
if assigned_vars.is_empty() {
definitions.push(Definition {
var: "",
used_vars: used_vars.clone(),
});
}
}
}
}