PR# 15853 Wrong flat form for `{like Current}.value' static call in descendant (or compiler bug)
Problem Report Summary
Submitter: prestoat2000
Category: EiffelStudio
Priority: Medium
Date: 2009/05/20
Class: Bug
Severity: Serious
Number: 15853
Release: 6.4.78765
Confidential: No
Status: Closed
Responsible:
Environment: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.9.0.10) Gecko/2009042715 Firefox/3.0.10
Solaris 10 on SPARC
Synopsis: Wrong flat form for `{like Current}.value' static call in descendant (or compiler bug)
Description
The Flat form for a routine with expression `{like Current}.value' (where `value' is an external or constant) is shown in a descendant class TEST as `{TEST}.value'. But when the system is executed the version of `value' in the ancestor TEST2 is actually called, so the Flat form is wrong. Either that or the compiler is generating the wrong code - it treats `{like Current}.value' written in TEST2 as though it were written `{TEST}.value'. If the compiler is wrong, let me know and I will add an eweasel test.
To Reproduce
Compile with attached classes and config file. Examine Flat form of routine {TEST}.try (inherited from TEST2). The Flat form shows the expression {TEST}.value but executing the system actually calls {TEST2}.value.
Problem Report Interactions
Fixed in rev#102989 of EiffelStudio 19.05 intermediate release (beta 19.03).
Manu says it is a deficiency in the compiler. Added eweasel test exec313 for this bug.
Ooops, wrong version of test.e. Use test_rev2.e instead, which has the needed redefine clause.