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.


  • 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.


  • 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.
  • bug#18758 (test#anchor073, test#anchor074, and test#anchor059) - Fixed some improper handling of qualified anchors.
  • test#anchor050 - Fixed an issue on .NET where the compiler would not properly handle like {X}.f.
  • test#anchor065 - Fixed a compiler crash when processing like {G}.value.
  • Fixed a bug in the interactive mode of the compiler that was preventing the display of classes that belong to a folder of a cluster.
  • test#valid265 - Fixed a bogus compilation error when the type of a variant expression is of an anchored type when it should have accepted it.
  • bug#18824 (test#anchor075) - Fixed a compiler crash in .NET code generation where like {X}.dotnet_query would crash the compiler at degree 3.
  • text#catcall013 - Fixed an issue with catcall checking which would crash the compiler in the specific case where a type used as argument has some conversion routines.
  • Fixed bug#18855 where we used the wrong constant to display the command switch for the `-debug' option.

SCOOP issues

Runtime/code generation issues

  • test#exec341 - Fixed a crash at runtime when performing an assignment using an object-less call, e.g. {EXT}.fea := bar.
  • Fixed a regression that caused a C compilation error after removing a type from the system.
  • bug#18758 (test#anchor072) - Fixed crash which only affected .NET code generation of qualified anchor types.
  • 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.