PR# 11663 Failure in SED_OBJECT_GRAPH_TRAVERSABLE:internal_traverse
Problem Report Summary
Submitter: randyjohn
Category: EiffelBase
Priority: Medium
Date: 2006/11/22
Class: Bug
Severity: Serious
Number: 11663
Release: 5.7.64493
Confidential: No
Status: Analyzed
Responsible:
Environment: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)
Synopsis: Failure in SED_OBJECT_GRAPH_TRAVERSABLE:internal_traverse
Description
During 'internal_traverse' my object had each element 'marked' but when it came time to 'unmark', the BOOLEAN was not already 'marked'. This fails the precondition in 'unmark'. I'm continuing with preconditions off in 'base'. Randy
To Reproduce
Problem Report Interactions
This bug is still present in 6.1.7.1123. Any hope of getting it fixed?
I can reproduce this now. The problem involves calling INTERNAL:make on one of these new type of expanded's that inherit from ANY. Apparently, that doesn't work. Randy class ROOT_CLASS inherit INTERNAL create make feature make is local l_int: INTERNAL l_spec: SPECIAL[ANY] l_field: ANY do l_spec ?= (<<False, "hi">>).area -- This code represents what happens in SED_OBJECT_GRAPH_TRAVERSABLE:internal_traverse. l_field := l_spec.item(0) -- 'l_field' now refers to a BOOLEAN. But this isn't an ordinary expanded BOOLEAN, nor is it -- a BOOLEAN_REF. It is this new-fangled "reference BOOLEAN" (a lot like a BOOLEAN_REF). -- Apparently, you can't 'mark' this type of object. mark(l_field) print(is_marked(l_field).out + "%N") -- This should be True but isn't. print(is_marked(l_spec.item(1)).out + "%N") -- This should be True but isn't. -- unmark(l_spec.item(1)) -- This will fail a require. -- This code better represents how I discovered .... Output truncated, Click download to get the full message
This indicates a major issue somewhere and disabling the assertion would only hide the problem. On which kind of type does it fail? Is this reproducible?