Previously, typestate was initializing the init constraint for a declared-but-not-initialized variable (like x in "let x;") to False, but other constraints to Don't-know. This led to over-lenient results when a variable was used before declaration (see the included test case). Now, everything gets initialized to False in the prestate/poststate- finding phase, and Don't-know should only be used in pre/postconditions. This aspect of the algorithm really needs formalization (just on paper), but for now, this closes #700 |
||
|---|---|---|
| .. | ||
| ann.rs | ||
| annotate.rs | ||
| auxiliary.rs | ||
| bitvectors.rs | ||
| ck.rs | ||
| collect_locals.rs | ||
| pre_post_conditions.rs | ||
| states.rs | ||
| tritv.rs | ||