Dear SmartEiffel Team,
i have encountered an bug in the repository from the beginning of april
(don't know the actual revision, but there are not that much newer
anyway). If you use some small classes like:
deferred class A
inherit ANY
redefine is_equal
end
feature
is_equal(other: like Current): BOOLEAN is
deferred
end
end
deferred class B
inherit ANY
redefine is_equal
end
feature
is_equal(other: like Current): BOOLEAN is
deferred
end
end
deferred class AB
inherit
A
B
feature
is_equal(other: like Current): BOOLEAN is
deferred
end
end
Now if you type short ab you get this:
deferred class interface AB
feature(s) from A
is_equal (other: like Current): BOOLEAN
-- Is `other' attached to an object considered equal to current
object?
require
other /= Void
other /= Void
ensure
commutative: generating_type = other.generating_type implies
Result = other.is_equal(Current)
end of deferred AB
Note the double in the require part. In a bigger system this raise to
more and more repetitions. And it seams that the compiler generates
for each a condition-test too. Maybe someone could take a look at this
issure?
If there are too much repetitions, it seams that short crashes too.
Thanks
Harald
PS.: If you take a closer look, you can verify the same behaviour if
you make short array and look at the creation clause from_collection.