View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000441 | mercury | Bug | public | 2017-10-18 22:47 | 2017-10-18 23:42 | ||||||||
Reporter | juliensf | ||||||||||||
Assigned To | zs | ||||||||||||
Priority | normal | Severity | minor | Reproducibility | always | ||||||||
Status | assigned | Resolution | open | ||||||||||
Product Version | |||||||||||||
Target Version | Fixed in Version | ||||||||||||
Summary | 0000441: Invalid C code for program in hlc.gc grade | ||||||||||||
Description | The attached program compiles and runs successfully in the asm_fast.gc grade. The generated C code fails to compile in the hlc.gc grade with the following error: Mercury/cs/test_vfm2.c: In function ‘test_vfm2__hello_1_f_0’: Mercury/cs/test_vfm2.c:130:18: error: void value not ignored as it ought to be HeadVar__2_2 = vfm2__printLine_2_f_0(TypeCtorInfo_5_5, TypeCtorInfo_6_6, ((MR_Box) (Var_4)), FIO_3); ^ ** Error making `Mercury/os/test_vfm2.o'. This is using rotd-2017-10-15 (although it also occurs with old roads). | ||||||||||||
Tags | No tags attached. | ||||||||||||
Attached Files |
|
Notes | |
zs (developer) 2017-10-18 23:42 |
The problem is NOT we generate the line that the error message is for. The problem is that vfm2.m knows that fio is a dummy type, and makes the return type of vfm2__printline_2_f_0 void accordingly, even though it keeps the definition of fio(T) *private*. This means that fio is NOT known to be a dummy type anywhere but inside the vfm2 module. We will need to split the concept of "dummy type" into two: dummy types that are known to be dummy everywhere, and those known to be dummy only in their defining module. |