all loops variables which are open read (not already bound by a redefinition within the loop) get a maybe read marker to their last definition within the loop
e.g. with:
for(iin1:10) { x_1 <- x_2 + 1 }
x_2 must get a read marker to x_1 as x_1 is the active redefinition in the second loop iteration.
When environment is supplied the function uses it to discover ALL definitions that are still live at the
loop exit, so sequential overwrites contribute a single candidate while if-else branches contribute one
candidate per branch.
all loops variables which are open read (not already bound by a redefinition within the loop) get a maybe read marker to their last definition within the loop e.g. with:
x_2must get a read marker tox_1asx_1is the active redefinition in the second loop iteration.When
environmentis supplied the function uses it to discover ALL definitions that are still live at the loop exit, so sequential overwrites contribute a single candidate while if-else branches contribute one candidate per branch.