diff --git a/documentation/trunk/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/Major-changes-between-ISE-Eiffel-15.12-and-ISE-Eiffel-16.05.wiki b/documentation/trunk/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/Major-changes-between-ISE-Eiffel-15.12-and-ISE-Eiffel-16.05.wiki index a3261de7..b8945f76 100644 --- a/documentation/trunk/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/Major-changes-between-ISE-Eiffel-15.12-and-ISE-Eiffel-16.05.wiki +++ b/documentation/trunk/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/Major-changes-between-ISE-Eiffel-15.12-and-ISE-Eiffel-16.05.wiki @@ -17,35 +17,35 @@ This is achieved as follows: The change allows dropping explicit detachable marks in local declarations and simplifying the code that uses Result, e.g. foo: X - local - r: detachable X - do - r := something - if not attached r then - r := something_else_attached - end - Result := r - end + local + r: detachable X + do + r := something + if not attached r then + r := something_else_attached + end + Result := r + end foo: X - do - if attached something as r then - Result := r - else - Result := something_else_attached - end - end + do + if attached something as r then + Result := r + else + Result := something_else_attached + end + end into foo: X - do - Result := something - if not attached Result then - Result := something_else_attached - end - end + do + Result := something + if not attached Result then + Result := something_else_attached + end + end The change does not allow previously void-unsafe code to be treated as void-safe, but may affect errors reported by the compiler, in particular: @@ -56,7 +56,7 @@ The change does not allow previously void-unsafe code to be treated as void-safe ==Improvements== * Improve reporting for errors in regular expressions used in include and exclude file rules in ECF by adding position information and providing error description all the time. -* Improve performance of code using across iterator. Breaking change causes you to the need of add a redefinition of index_set to have code compatible with both 15.12 and 16.05. Optimized code generation for iteration instruction calls to `after' and `forth' by rechecking the code with the actual type of a cursor variable. Added `lower' and `upper' to {READABLE_INDEXABLE} to be used instead of `index_set' by iteration cursor. Marked `{READABLE_INDEXABLE}.index_set' as obsolete in favor of `lower' and `upper' to avoid object creation, especially when implementing external cursors for iterative forms of a loop. Provided implementation of `index_set' in {READABLE_INDEXABLE} so that it can be removed in descendants. Made `lower_defined' and `upper_defined' in {INTEGER_INTERVAL} always True because this was the case for all created objects and clients almost never checked if boundaries were defined. Provided specialized versions of iteration cursors for SPECIAL, ARRAY, ARRAYED_LIST, READABLE_STRING_8, READABLE_STRING_32 to improve performance of across loops for these containers. +* Improve performance of code using across iterator.
Breaking change causes you to the need of add a redefinition of index_set to have code compatible with both 15.12 and 16.05. Optimized code generation for iteration instruction calls to after and forth by rechecking the code with the actual type of a cursor variable. Added lower and upper to {READABLE_INDEXABLE} to be used instead of index_set by iteration cursor. Marked {READABLE_INDEXABLE}.index_set as obsolete in favor of lower and upper to avoid object creation, especially when implementing external cursors for iterative forms of a loop. Provided implementation of index_set in {READABLE_INDEXABLE} so that it can be removed in descendants. Made lower_defined and upper_defined in {INTEGER_INTERVAL} always True because this was the case for all created objects and clients almost never checked if boundaries were defined. Provided specialized versions of iteration cursors for SPECIAL, ARRAY, ARRAYED_LIST, READABLE_STRING_8, READABLE_STRING_32 to improve performance of across loops for these containers. ==Changes== @@ -77,16 +77,16 @@ The change does not allow previously void-unsafe code to be treated as void-safe failure - local - i: INTEGER - do - bar (Void).make_from_array (Void) -- Comment out this line to fix the bug. - across - <<1, 2, 3>> as c_i - loop - i := c_i.item -- Error here. - end - end + local + i: INTEGER + do + bar (Void).make_from_array (Void) -- Comment out this line to fix the bug. + across + <<1, 2, 3>> as c_i + loop + i := c_i.item -- Error here. + end + end * Fix .NET code generation to generate verifiable code when converting a manifest integer constant compatible with a NATURAL_64 (see eweasel test#dotnet118) @@ -94,3 +94,4 @@ failure * Fix invalid inlining of routine involving an object test local, an iteration cursor or a separate instruction local (see bug#18028, test#final114, test#final123, test#bench019). * Fix test#scoop077 by applying SCOOP semantics rules and checking SCOOP validity rules for iteration cursors. * Fix an issue when extracting a type ID from a string involving the separate keyword. +