Known Bugs - 1.5 | ![]() ![]() |
Following is a list of known defects in Gobo Eiffel 1.5 along with eventual bug fixes or workarounds. If you find a bug which does not appear in this list yet, please send me a bug report. I will add the description of this bug here and try to provide a bug fix as soon as possible (usually within one or two days).
1.5-001 Reported by Eric Bezault (02/10/99)
gelex does not compile with SmallEiffel -0.77b2 and -0.77b3 (the generated C code is erroneous). You should use SmallEiffel -0.78 or wait for -0.77b4 in order to generate gelex executable. Note that gelex.exe compiled under Windows is already available in the distribution.
1.5-002 Reported by Alexander Kogtenkov (07/10/99)
In the following two feature signatures, like item has to be replaced by G:
- in class DYNAMIC_LIST ($GOBO/library/structure/base/dynamic_list.e):
put_right (v: like item) becomes put_right (v: G)- and in class LINEAR ($GOBO/library/structure/base/linear.e):
has (v: like item): BOOLEAN becomes has (v: G): BOOLEANThis is because Visual Eiffel is strict in handling anchored types and follows Eiffel validity rule VTAT in this regard.
1.5-003 Reported by Armen Aghasaryan (21/10/99)
Some invariants are violated when using classes LINKED_LIST and TWO_WAY_LIST from $GOBO/library/structure/base/. To fix this problem, please update the following features:
- in class DS_LINKED_LIST_CURSOR ($GOBO/library/structure/cursor/ds_linked_list_cursor.e):
- replace feature start by:
start is -- Move cursor to first position. -- (Performance: O(1).) local was_off: BOOLEAN do was_off := off current_cell := container.first_cell before := False after := (current_cell = Void) if not after and was_off then container.add_traversing_cursor (Current) end end- replace feature finish by:
finish is -- Move cursor to last position. -- (Performance: O(1).) local was_off: BOOLEAN do was_off := off current_cell := container.last_cell after := False before := (current_cell = Void) if not before and was_off then container.add_traversing_cursor (Current) end end- replace feature forth by:
forth is -- Move cursor to next position. -- (Performance: O(1).) local was_off: BOOLEAN do if before then was_off := True current_cell := container.first_cell before := False else current_cell := current_cell.right end after := (current_cell = Void) if after then if not was_off then container.remove_traversing_cursor (Current) end elseif was_off then container.add_traversing_cursor (Current) end end- replace feature back by:
back is -- Move cursor to previous position. -- (Performance: O(index).) local a_cell: like current_cell was_off: BOOLEAN do if after then was_off := True current_cell := container.last_cell after := False elseif is_first then before := True current_cell := Void else from a_cell := container.first_cell until a_cell.right = current_cell loop a_cell := a_cell.right end current_cell := a_cell end before := (current_cell = Void) if before then if not was_off then container.remove_traversing_cursor (Current) end elseif was_off then container.add_traversing_cursor (Current) end end- in class DS_BILINKED_LIST_CURSOR ($GOBO/library/structure/cursor/ds_bilinked_list_cursor.e):
- replace feature back by:
back is -- Move cursor to previous position. -- (Performance: O(1).) local was_off: BOOLEAN do if after then was_off := True current_cell := container.last_cell after := False else current_cell := current_cell.left end before := (current_cell = Void) if before then if not was_off then container.remove_traversing_cursor (Current) end elseif was_off then container.add_traversing_cursor (Current) end end
1.5-004 Reported by Eric Bezault (27/11/99)
In order to use Gobo Eiffel 1.5 with ISE Eiffel 4.5, the following patches need to be applied:
- in class KL_STRING_BUFFER_ROUTINES ($GOBO/library/kernel/spec/ise/kl_string_buffer_routines.e), replace feature make by:
make (n: INTEGER): like STRING_BUFFER_TYPE is -- Create a new string buffer being able -- to contain `n' characters. require non_negative_n: n >= 0 local to_special: TO_SPECIAL [CHARACTER] do !! to_special.make_area (n) Result := to_special.area ensure string_buffer_not_void: Result /= Void count_set: Result.count = n end- add class SET to the Gobo Eiffel Structure Library base cluster ($GOBO/library/structure/base/):
indexing description: "EiffelBase SET class interface" library: "Gobo Eiffel Structure Library" copyright: "Copyright (c) 1999, Eric Bezault and others" license: "Eiffel Forum License v2 (see forum.txt)" date: "$Date: 2003/02/07 11:48:35 $" revision: "$Revision: 1.3 $" deferred class SET [G] inherit CONTAINER [G] redefine changeable_comparison_criterion end feature -- Status report prunable: BOOLEAN is -- May items be removed? deferred end feature -- Element change extend (v: G) is -- Ensure that structure includes `v'. require extendible: extendible deferred ensure item_inserted: has (v) end fill (other: CONTAINER [G]) is -- Fill with as many items of `other' as possible. -- The representations of `other' and current structure -- need not be the same. require other_not_void: other /= Void extendible: extendible deferred end feature -- Removal prune (v: G) is -- Remove one occurrence of `v' if any. -- (Reference or object equality, -- based on `object_comparison'.) require prunable: prunable deferred end prune_all (v: G) is -- Remove all occurrences of `v'. -- (Reference or object equality, -- based on `object_comparison'.) require prunable: prunable deferred ensure no_more_occurrences: not has (v) end changeable_comparison_criterion: BOOLEAN is -- May `object_comparison' be changed? -- (Answer: only if set empty; otherwise insertions might -- introduce duplicates, destroying the set property.) do Result := empty ensure then only_on_empty: Result = empty end end -- class SET
Copyright © 1999-2002, Eric
Bezault and others mailto:ericb@gobosoft.com http://www.gobosoft.com Last Updated: 3 April 2002 |
![]() ![]() ![]() ![]() |