This issue should not be resolved until all tests in this PR pass when fixme is removed from the name.
When running rmc <filename> on any of the tests added in this PR, we expect a FAILURE, but get SUCCESS.
This seems to be caused by two things:
- When CBMC encounters a function which does not appear in the vtable, it (we believe) translates to
assume(0).
- For dynamic traits, different naming conventions are used for insertion and lookup on the vtable.
When specifically running fixme_boxtrait_fail.rs, we receive the following log:
WARN rustc_codegen_llvm::gotoc::rvalue Unable to find vtable symbol for <Concrete as Trait>::increment. Using NULL instead
and when we view the symbol table using rmc --keep-temps fixme_boxtrait_fail.rs and opening fixme_boxtrait_fail.json, we find the following:
...
"_ZN76_$LT$fixme_boxtrait_fail..Concrete$u20$as$u20$fixme_boxtrait_fail..Trait$GT$9increment17ha9f75436a1c6f32dE": {
"baseName": "_ZN76_$LT$fixme_boxtrait_fail..Concrete$u20$as$u20$fixme_boxtrait_fail..Trait$GT$9increment17ha9f75436a1c6f32dE",
...
"name": "_ZN76_$LT$fixme_boxtrait_fail..Concrete$u20$as$u20$fixme_boxtrait_fail..Trait$GT$9increment17ha9f75436a1c6f32dE",
"prettyName": "fixme_boxtrait_fail::{impl#1}::increment",
...
Note the difference in names used: <Concrete as Trait>::increment vs fixme_boxtrait_fail::{impl#1}::increment.
This issue should not be resolved until all tests in this PR pass when
fixmeis removed from the name.When running
rmc <filename>on any of the tests added in this PR, we expect a FAILURE, but get SUCCESS.This seems to be caused by two things:
assume(0).When specifically running
fixme_boxtrait_fail.rs, we receive the following log:and when we view the symbol table using
rmc --keep-temps fixme_boxtrait_fail.rsand openingfixme_boxtrait_fail.json, we find the following:Note the difference in names used:
<Concrete as Trait>::incrementvsfixme_boxtrait_fail::{impl#1}::increment.