Major changes between ISE Eiffel 6.8 and ISE Eiffel 7.0

What's new

  • Supported development of incomplete void-safe classes (so called "design mode") by avoiding reporting void-safety errors for unreachable code, e.g. for the code after a call to a feature that never returns normally, say, to {EXCEPTIONS}.die. As a result it became possible to declare a creation procedure that does not initialize attached attributes properly (because the corresponding effective classes are not available yet), for example:

make (...) do ... -- Some attributes are not initialized. die (1) -- Compiler does not report VEVI errors. end


make (...) do ... -- Some attributes are not initialized. check implemented: False then end -- Compiler does not report VEVI errors. end


  • Enforced full class checking for void-safe classes.
  • Disallowed void-safety mismatch when a descendant or a client have stricter void-safety setting than the corresponding ancestor or supplier.
  • Taken into account changes of class options when performing recompilation.
  • Changed processing of "stable" features to follow the recent modifications to the standard.
  • Avoided reporting errors related to variable initialization when the right-hand part of assignment to this variable causes an error.
  • Promoted keywords across and some from the provisional syntax variant to the standard one.
  • Made class BIT_REF optional as soon as a BIT type is not used in a system (to be ready to drop support for BIT types in the next releases).
  • Replaced keyword completion for indexing with keyword completion for note.


Bug fixes

Language issues

  • Considered like Current as attached regardless of attached-by-default option.
  • Prohibited assignment of Void to a variable of a reference formal generic type that has no detachable mark.
  • Supported attachment marks on the type NONE, including implicit setting via attached-by-default option.
  • Corrected processing of self-initializing attributes to follow the standard rules.

Compiler issues

  • Included location information in VTCT error and VTCM warning reports.
  • Fixed several recompilation issues.
  • Fixed several cases that could lead to a compiler crash.
  • Corrected checks for attachment status of variables to include not only a body of a loop, but also its invariant, variant and exit condition when a variable may be detached in the loop body.
  • Taken into account attachment status of like Current when checking for conformance.
  • Taken separateness status into account when checking for formal generic type equality and conformance as well as when substituting actual generics.
  • Made custom conditions in ECF case-insensitive to be in line with the processing of custom variables.
  • Changed context of inherited assertion evaluation to use the one of the inherited assertion so that the types are evaluated correctly (this in particular affects qualified anchored types that involve formal generics that are no longer present in a descendant class).

Runtime/code generation issues

  • Fixed several issues with separate feature calls.

Store/Retrieve issues

  • Fixed an issue when there are too many mismatches in a storable, the retrieval would fail with an invalid object being retrieved.