Major changes between ISE Eiffel 13.11 and ISE Eiffel 14.05

  1. What's new
  2. Improvements
  3. Changes
  4. Bug fixes
    1. Language issues
    2. Compiler issues
    3. SCOOP issues
    4. Runtime/code generation issues
    5. Store/Retrieve issues

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.