[[Property:title|Differences between standard ECMA-367 and Eiffel Software implementation]] [[Property:weight|-10]] [[Property:uuid|0eb58761-5b06-585f-ea92-cab2b8cd74b2]] ==Kernel classes== {| |- |
infix "+"
| Yes
| No
| Yes
|-
| 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
|}
==Genericity==
{|
|-
| 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==
{|
|-
| ANY.default_create)
| class A feature ... end-- The following instructions are equivalent:create {A} acreate {A} a.default_create
| No
| Yes
| Yes
|-
| Bang-bang syntax
| !! a!! a.make!B! a!B! a.make
| Yes
| No
| Yes, marked as obsolete
|-
| Keyword syntax
| create acreate a.makecreate {B} acreate {B} a.make
| No
| Yes
| Yes
|-
| Creation expression
| print (create {TIME}.make_now)
| No
| Yes
| Yes
|-
| [[7 Genericity and Arrays|Generic creation]]
| create {G} x.make
| No
| Yes
| Yes
|}
==Attachment==
{|
|-
| 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
| x ?= y
| Yes
| No
| Yes
|}
==Feature calls==
{|
|-
| Precursor
| No
| Yes
| Yes
|-
| Non-object call
| c := {COLOR}.green
| No
| Yes
| Yes
|-
| Assigner call
| x [i] := x [i] + 1
| No
| Yes
| Yes
|-
| Bracket expression as call target
| x [i].a: !ANY b: ?ANY
| No
| Yes, attached by default
| Yes, default attachment status is controlled by option ''is_attached_by_default''
|-
| Object test
| {o: !STRING} e
| No
| Yes
| Yes, all object tests should use different names for locals inside a feature, object tests are not permitted in preconditions and check instructions
|-
| Attached target of a call
| x.f
| No
| Yes
| Yes, by option ''is_void_safe''
|-
| Properly set variable
| x := value use (x)
| No
| Yes
| Yes, by option ''is_void_safe''
|}
==Expressions==
{|
|-
| 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 [[10 Other Mechanisms|tuple]]
| [a, b, c]
| No
| Yes
| Yes
|-
| [[11 Agents|Agent]]
| list.do_all (agent print (?))
| No
| Yes
| Yes
|-
| Once manifest string
| once "abc"
| No
| Yes
| Yes
|}
==Constants==
{|
|-
| 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
| Hexadecimal integers
|-
| Integer with intermediate underscores
| 1_000 0xFFFF_0000
| In groups by 3 digits
| Yes
| Yes
|}
==Interfacing with external software==
{|
|-
|