PR# 15876 Finalizing system with external INTEGER function redefined to constant crashes compiler if inlined

Problem Report Summary
Submitter: prestoat2000
Category: Compiler
Priority: Medium
Date: 2009/05/26
Class: Bug
Severity: Serious
Number: 15876
Release: 6.4.78765
Confidential: No
Status: Closed
Responsible: alexk_es
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: Finalizing system with external INTEGER function redefined to constant crashes compiler if inlined

Description
Finalizing a system with an external INTEGER function that is redefined to a
constant INTEGER in a descendant class crashes the compiler in 
{EXTERNAL_B}.sub_enlarged if inlining is enabled.

Added eweasel test final081 for this bug.
To Reproduce
Run eweasel test final081.
Problem Report Interactions
From:alexk_es    Date:2019/03/21    Status: Closed    Download   
Fixed in rev#102989 of EiffelStudio 19.05 intermediate release (beta 19.03).

From:prestoat2000    Date:2011/06/03    Download   
I think I see what is going wrong here, but again, I don't know how to fix it.
The postcondition of {EXTERNAL_B}.enlarged_on is being violated because
Result is Void.  Stepping through with the debugger reveals that execution
reaches this line in that function:

  Result ?= byte_node (f, a_type_i).enlarged

The call to `byte_node' returns a non-Void result, but its type is
CONSTANT_B, which does not conform to the type of Result, which is
CALL_ACCESS_B.  

Without knowing anything about how the code works, I thought perhaps
the return type should instead be ACCESS_B, but making that change
causes a cascade of "redeclaration has non-conforming signature" validity
errors, so I gave up at that point.

Maybe you already know all that and there is no simple localized fix.