[[Property:modification_date|Tue, 09 Jul 2019 09:52:07 GMT]] [[Property:publication_date|Tue, 09 Jul 2019 09:46:53 GMT]] [[Property:title|Differences between standard ECMA-367 and Eiffel Software implementation]] [[Property:link_title|ECMA-367 vs implementation]] [[Property:weight|-10]] [[Property:uuid|0eb58761-5b06-585f-ea92-cab2b8cd74b2]] "ETL 2" refers to the book "Eiffel: The Language" (2nd printing), published by Prentice Hall. ==Kernel classes== {| class="doctable" |- !
infix "+"
| Yes
| No
| Yes, marked as obsolete
|-
| Operator and bracket aliases
| add alias "+"
| No
| Yes
| Yes, except for new rules
for free operator names
|-
| Assigner command
| item alias "[]" (index: INTEGER): G assign put
| No
| Yes
| Yes
|}
==Design by Contract==
{| class="doctable"
|-
! A [H, G -> H]
B [H -> C, G -> ARRAY [H]]
| No
| Yes
| Yes
|-
| Full mutually recursive constraints
| A [H -> G, G -> H]
A [reference G]
B [expanded H]
| No
| No
| Yes
|}
==Creating objects==
{| class="doctable"
|-
! ANY.default_create
)
| class A feature ... end
-- The following instructions are equivalent:
create {A} a
create {A} a.default_create
| No
| Yes
| Yes
|-
| Bang-bang syntax
| !! acreate a
create a.make
create {B} a
create {B} a.make
| No
| Yes
| Yes
|-
| Creation expression
| print (create {TIME}.make_now)
| No
| Yes
| Yes
|-
| [[ET: Genericity and Arrays|Generic creation]]
| create {G} x.make
| No
| Yes
| Yes
|}
==Attachment==
{| class="doctable"
|-
! x
:=
y
| No, object is copied to new
object of the corresponding
reference type
| Yes
| Yes, except for TYPED_POINTER
that is converted to POINTER before
reattachment
|-
| Reverse assignment (assignment attempt)
| x
?=
y
| Yes
| No
| Yes. Marked as obsolete (V7.1).
|}
==Feature calls==
{| class="doctable"
|-
! Precursor
| No
| Yes
| Yes
|-
| Non-object call
| c := {COLOR}.green
| No
| Yes
| Yes
|-
| Assigner call
| a: attached ANY
b: detachable ANY
| No
| Yes, attached by default
| Yes, attached by default
|-
| Object test
| attached {STRING} e as o
| No
| Yes
| Yes
|-
| Attached target of a call
| x.f
| No
| Yes
| Yes, by option ''void_safety''
|-
| Properly set variable
| x := value
use (x)
| No
| Yes
| Yes, by option ''void_safety''
|}
==[[Concurrent programming with SCOOP|SCOOP]]==
{| class="doctable"
|-
! a: separate ANY
| No
| No. separate
reserved but not used
| Yes. Object attached to a
may be handled by different SCOOP processor.
|}
==Expressions==
{| class="doctable"
|-
! y := x [i]
| No
| Yes
| Yes
|-
| Creation expression
| set_buffer (create {STRING}.make (100))
| No
| Yes
| Yes
|-
| Manifest type
| {MY_TYPE}
| No
| Yes
| Yes
|-
| Manifest [[ET: Other Mechanisms|tuple]]
| [a, b, c]
| No
| Yes
| Yes
|-
| [[ET: Agents|Agent]]
| list.do_all (agent print (?))
| No
| Yes
| Yes
|-
| Once manifest string
| once "abc"
| No
| Yes
| Yes
|}
==Constants==
{| class="doctable"
|-
! x := "[
This string is left-adjusted.
]"
y := "{
This string is used "as is".
}"
| No
| Yes
| Yes
|-
| Manifest type qualifier
| {INTEGER_8} 123
| No
| Yes
| Yes
|-
| Non-decimal integer
| 0xFF
| No
| Yes
| Yes
|-
| Integer with intermediate underscores
| 1_000 0xFFFF_0000
| In groups by 3 digits
| Yes
| Yes
|}
==Interfacing with external software==
{| class="doctable"
|-
!