Incorrect typing of term conditional over floats
ID0001309: This issue was created automatically from Mantis Issue 1309. Further discussion may take place here.
Id | Project | Category | View | Due Date | Updated |
---|---|---|---|---|---|
ID0001309 | Frama-C | Kernel > ACSL implementation | public | 2012-11-19 | 2014-02-12 |
Reporter | signoles | Assigned To | virgile | Resolution | fixed |
Priority | normal | Severity | minor | Reproducibility | always |
Platform | - | OS | - | OS Version | - |
Product Version | - | Target Version | - | Fixed in Version | Frama-C Fluorine-20130401 |
Description :
void foo(int c) { float f = 1.0; /*@ assert 0.0 <= (c ? f : 2.0); */ }
In this example, both terms f and 2.0 in the conditional must get type Real. That is not the case. You can see that by running the attached script on this file: frama-c -load-script test.ml test.i IF ????? float : ?