PR# 15916 Finalizing routine with agent call on redefined function calls wrong version of function

Problem Report Summary
Submitter: prestoat2000
Category: Compiler
Priority: Medium
Date: 2009/06/02
Class: Bug
Severity: Serious
Number: 15916
Release: 6.4.78984
Confidential: No
Status: Analyzed
Responsible:
Environment: Mozilla/5.0 (X11; U; SunOS sun4u; en-US; rv:1.8.1.19) Gecko/20090218 Firefox/2.0.0.19 Solaris 10 on SPARC
Synopsis: Finalizing routine with agent call on redefined function calls wrong version of function

Description
An expanded class has a routine with an agent constructed and called on a
function `value'.  A descendant class redefines `value'.  If the system is
finalized (with or without inlining) the wrong version of the function is called
(the one in the ancestor).  Frozen code works correctly.

Added eweasel test final082 for this bug.

This seems like a pretty serious bug since it won't necessarily be obvious
that the finalized code is wrong (no compiler crash or C compilation failure).
I hope it can be fixed for 6.4.
To Reproduce
Run eweasel test final082.
Problem Report Interactions
From:paulbates    Date:2009/09/30    Status: Analyzed    Download   
Apologies, this was not fix.

From:paulbates    Date:2009/09/30    Status: Closed    Download   
The last full eweasel report on Aug-13 reports this is now fixed.

From:prestoat2000    Date:2009/06/02    Download   
I couldn't find any "replication" options in the config file, but changing
the inheritance in TEST to "inherit {NONE} TEST" causes the test to pass.
So it sounds like the real problem here is that the compiler should report
a validity error but currently does not.

From:manus_eiffel    Date:2009/06/02    Status: Analyzed    Download   
There are other things we need to finish for the 6.4 release and I doubt we will have time to fix this bug. However, if I recall the intent of what we wanted to do in the standard, the code should be rejected by the compiler since `expanded' actually means frozen (nothing conforms to the expanded entity) and thus you should use `non-conforming' inheritance instead. In which case, it is possible that we actually generate the proper code if the `replication' options is enabled.