From: Alexander K. <kw...@ah...> - 2004-11-01 12:50:38
|
The accompanying bug is in a class invariant: sign * abs = item Let's look at types of the features in class INTEGER_8: sign: INTEGER abs: INTEGER_8 item: INTEGER_8 For value -128 we'll have sign = -1 (INTEGER) abs = -128 (INTEGER_8) item = -128 (INTEGER_8) Then sign * abs = 128 (INTEGER) and sign * abs = item gives false. If "sign" were of type INTEGER_8, then there were no problems even with implementation of "abs" that returns negative result for minimum integer. Wouldn't it be better to change type of "sign" from INTEGER to INTEGER_8? BTW, according to ELKS'95 the type of "abs" should be "like Current" and not "INTEGER*". Alexander Kogtenkov |