Major changes between ISE Eiffel 13.11 and ISE Eiffel 14.05

What's new

Syntax warnings are now reported for unsupported empty lists such as (), or [], or {}, as well as an empty export clause `export {NONE} end'.

Added ability to extract the file location of a class in interactive mode.

Improvements

Made workbench code more compact and faster by about 5 to 9% on average.

Improved memory tool to list all fields of an object.

Better command line usage that will report why the command line is incorrect instead of displaying the whole help.

Compiler is now more robust if some required routines/classes are not found as expected by the compiler. It will now report a Library_error error instead of failing.

Now the compiler reports all VWEQ warnings as before it was only doing it if you were comparing an expanded with a reference.

Changes

In circa 2000, we allowed $x and $(expr) as expression instead of just argument passing. But while this was good for just $x, $(expr) is actually not supported properly in the code generation. In 14.05, we have disallowed $(expr) outside argument passing.

In workbench mode, if the melted file cannot be found, instead of exiting the application, the application will run as if it had never been melted and will instead print a warning in the console.

Bug fixes

Language issues

Compiler issues

test#anchor071 - Fixed computation of a qualified anchored type that involves a formal generic parameter and feature redeclaration in a descendant of the formal generic constraint.

test#anchor077 - Fixed a compiler crash when analyzing the following qualified anchored type like x.f where f is defined as f: like y.z.w.

bug#16991 (test#anchor056) - Fixed a bug that might cause the compiler to report an unknown feature in a qualified anchored type with a formal generic qualifier constrained only by formal generic types.

test#anchor070 - Fixed a bug that might cause a compiler crash when nested qualified anchored types with a longer feature chain were involved in qualifiers of other qualified anchored types.

bug#16983 (test#anchor055), bug#17034 (test#anchor057) - Fixed a bug that caused a crash when compiling code with a creation of an object of a qualified anchored type with a formal generic.

bug#17239 (test#term198) - Fixed a bug that caused a crash when compiling the code that used an inline agent as an iteration expression.

bug#17233 (test#term196) - Supported iteration on an expression of a formal generic type.

bug#18759 (test#iteration004) - Changed processing of {ITERABLE}.new_cursor to use a renamed version of the feature in a descendant class rather than the feature having this name.

test#config028, test#config029 and test#config038 - Fixed a crash when using a cluster/library with an invalid path.

Fixed a long standing bug where descriptions in external nodes were lost.

Fixed an issue with interactive mode where displaying all classes was actually not display classes which are part of a recursive cluster.

test#anchor018, test#anchor050, test#anchor054, test#anchor056, test#anchor059, test#anchor063 and other tests - Fixed a code generation issue on .NET where some incorrect casts where generated causing an exception at runtime when the code is actually ok.

test#freez022 - Fixed a missing conversion at runtime when formal argument type is an anchor.

Fixed CECIL library creation to take into account the new memory_analyzer.o and offset.o modules of the runtime.

bug#18785 (test#ccomp089) - Fixed a code generation issue for Linux 32-bit for the generation of the value of NaN, +Infinity and -Infinity for floating numbers.

Store/Retrieve issues

Fixed an issue where retrieving a large amount of objects on a x86 platform, we would crash where restoring one of the store/retrieve stack using epop.

bug#18835 - Fixed a potential overflow issue with store/retrieve when you have more than 2^31 objects.