Bug in short / compile_to_c

1 message Options
Embed this post
Permalink
Harald

Bug in short / compile_to_c

Reply Threaded More More options
Print post
Permalink
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.