PR# 12282 Expression with INTEGER_32 times REAL_64 interpreted as INTEGER_32 by full class checker
Problem Report Summary
Submitter: prestoat2000
Category: Compiler
Priority: Medium
Date: 2007/03/12
Class: Bug
Severity: Serious
Number: 12282
Release: 6.0.67183
Confidential: No
Status: Closed
Responsible: manus_eiffel
Environment: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.0.7) Gecko/20060915 Firefox/1.5.0.7
Solaris 9 on SPARC
Synopsis: Expression with INTEGER_32 times REAL_64 interpreted as INTEGER_32 by full class checker
Description
An expression that is an INTEGER_32 times a REAL_64 is treated as being of type INTEGER_32 by the full class checker, though it produces the correct result when full class checking is turned off.
To Reproduce
Compile with attached classes and .ecf file. Compiler reports VUAR(2) error, where it seems to be interpreting an expression that is INTEGER_32 * REAL_64 as being of type INTEGER_32. Error code: VUAR(2) Type error: non-conforming actual argument in feature call. What to do: make sure that type of actual argument conforms to type of corresponding formal argument. Class: TEST Source class: TEST1 Feature: try Called feature: min (other: [like Current] INTEGER_32): [like Current] INTEGER_32 from COMPARABLE Argument name: other Argument position: 1 Actual argument type: REAL_64 Formal argument type: INTEGER_32 Line: 10 do -> x := (2 * double1).min (double2) Now change full_class_checking to false. Compile. Execute system. Produces expected result where `2 * double1' is a REAL_64, not an INTEGER_32.
Problem Report Interactions
This seems to be fixed by rev 74890. Test svalid001 passes with rev 75070. Closing report.
I've modified test#svalid001 to re-exhibit the problem.
Actually this has not been fixed but somehow it is getting through. I'm reopening it until I find why it seems to be fixed.
This seems to be fixed in 6.2.72969. Compiler accepts classes with full_class_checking enabled, as it should. Closing report.
I already have an eweasel test for it, it is svalid001. I hope to be able to fix it this week. At the moment the full class checker will fail each time you perform the check of a routine call involving a conversion.