True when the evaluation of Current has no side effect at all (i.e. no memory allocated, no
modification in the _heap_ memory, no external code with possible side effect).
Used both for specialize_in and specialize_thru to indicate that we have all FEATURE_STAMPs
ready for use and that FEATURE_NAMEs are no longer used (except for calls on non-current target
who are available after specialize_2 -- step).
Assuming that Current is already specialized in parent_type, now specialize Current for the
new_type knowing that this source code is inherited thru parent_edge.
True when the evaluation of Current has no side effect at all (i.e. no memory allocated, no
modification in the _heap_ memory, no external code with possible side effect).
Actually, when
side_effect_free is True, Current can be evaluated more than once or not evaluated at all.
Specialize Current knowing that the corresponding source code was written in type.
The Result
still contains all the original source code information in order to be able to specialize_in again
the Result in another type. (See also specialize_thru and has_been_specialized as well.)
Used both for specialize_in and specialize_thru to indicate that we have all FEATURE_STAMPs
ready for use and that FEATURE_NAMEs are no longer used (except for calls on non-current target
who are available after specialize_2 -- step).
Finally, also note that the purpose of this
feature is mostly to write contracts (see also the strange ensure assertion).
Assuming that Current is already specialized in parent_type, now specialize Current for the
new_type knowing that this source code is inherited thru parent_edge.