[[Property:title|Major changes between ISE Eiffel 6.8 and ISE Eiffel 7.0]]
[[Property:link_title|7.0]]
[[Property:weight|13]]
[[Property:uuid|0211321e-969d-04a4-66ee-2a6069836845]]
==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 <e>{EXCEPTIONS}.die</e>. 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:
<e>
make (...)
	do
		... -- Some attributes are not initialized.
		die (1) -- Compiler does not report VEVI errors.
	end
</e>
:or
<e>
make (...)
	do
		... -- Some attributes are not initialized.
		check implemented: False then end -- Compiler does not report VEVI errors.
	end
</e>

==Improvements==
* 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 <e>across</e> and <e>some</e> from the '''provisional''' [[Setting the syntax variant|syntax variant]] to the '''standard''' one.
* Made class <e>BIT_REF</e> optional as soon as a <e>BIT</e> type is not used in a system (to be ready to drop support for <e>BIT</e> types in the next releases).
* Replaced keyword completion for <e>indexing</e> with keyword completion for <e>note</e>.

==Changes==
* Changed default options: default [[Setting the syntax variant|syntax variant]] is set to [[Syntax level variant settings by version|standard]], [[Creating a new void-safe project#The "Are types attached by default?" setting|attached-by-default]] is set to '''true''' unless specified otherwise.
* Moved [[Creating a new void-safe project#The "Are types attached by default?" setting|attached-by-default]] option to [[Advanced Options|Advanced]] section.

==Bug fixes==

===Language issues===
* Considered <e>like Current</e> as attached regardless of [[Creating a new void-safe project#The "Are types attached by default?" setting|attached-by-default]] option. 
* Prohibited assignment of <e>Void</e> to a variable of a reference formal generic type that has no <e>detachable</e> mark.
* Supported attachment marks on the type <e>NONE</e>, including implicit setting via [[Creating a new void-safe project#The "Are types attached by default?" setting|attached-by-default]] option.
* Corrected processing of self-initializing attributes to follow the standard rules.

===Compiler issues===
* Included location information in <code>VTCT</code> error and <code>VTCM</code> 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 <e>like Current</e> 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.

