PR# 13010 Wrong flat form for routine that calls generic infix feature renamed to identifier feature
Problem Report Summary
Submitter: prestoat2000
Category: EiffelStudio
Priority: Medium
Date: 2007/06/05
Class: Bug
Severity: Serious
Number: 13010
Release: 6.0.68843
Confidential: No
Status: Suspended
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: Wrong flat form for routine that calls generic infix feature renamed to identifier feature
Description
A generic class with header class TEST1 [G -> {NUMERIC, DOUBLE rename infix "+" as weasel end}] contains a routine with a call print (x.weasel (x)) The flat form of this routine is wrong and also includes a "compilation failure" message.
To Reproduce
Compile with attached classes. Pick routine `make' from TEST1 and drop it in the Feature Relation tool. Select Flat format. Flat format is wrong (has `print (x(Current + (x)))' in body) and there is a message that says -- Error(s) occured, which was due to a compilation failure. -- Multi constraint formal: More than one feature available for feature with routine id: 568
Problem Report Interactions
The problem is that internally it is x.weasel (x) and after the target has been printed we notice that it is actually an infix feature. However, by then it is to lated add the needed parenthesis in front of the target: (x + x) This is why we use x.infix"+" (x) for now in the case of inherited or multi-constraint renamed featrues. It is valid Eiffel as well and once we refactor this code we can do a proper fix.
For the moment this is the best we can do.
Not fixed in rev 69072. The Flat form is different now (closer to being correct). It is: make -- (export status {NONE}) do print (x.infix "+" (x)) end Reopening report.
Fixed in rev#69057.