SUBTYPEP problem with hairy classes
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Incomplete
|
Medium
|
Unassigned |
Bug Description
Reported by Lars Rune Nøstdal on sbcl-devel 2008-10-24.
SUBTYPEP sometimes signals an error when Contextl calls it to determine subclass relationships, causing the problems seen below (since Contextl assumes that SUBTYPEP signalling an error means NIL, basically.) The questions Contextl puts to SUBTYPEP seem answerable, and should not signal an error.
Test case below. To trigger the problem on a new Contextl replace SUBCLASSP tests in contextl with SUBTYPEP, SUBCLASSP there is a workaround for this SBCL bug.
(eval-when (:compile-toplevel :load-toplevel :execute)
(unintern 'person)
(unintern 'address-mixin))
((name :accessor name-of
(deflayer address-mixin)
((address :accessor address-of
())
..backtrace:
While computing the class precedence list of the class named PERSON.
It is not possible to compute the class precedence list because
there are circularities in the local precedence relations.
These arise because:
The class #<SPECIAL-
The class named SPECIAL-OBJECT appears in the supers of the class #<SPECIAL-
The class #<SPECIAL-
supers of the class named PERSON.
The class named ADDRESS-MIXIN appears in the supers of the class #<SPECIAL-
The class #<SPECIAL-
The class #<SPECIAL-
#<SPECIAL-
Restarts:
0: [RETRY] Retry SLIME interactive evaluation request.
1: [ABORT] Return to SLIME's top level.
2: [TERMINATE-THREAD] Terminate this thread (#<THREAD "worker" RUNNING {BE5BA61}>)
Backtrace:
0: (SB-PCL::CPL-ERROR #<LAYERED-CLASS PERSON> "It is not possible to compute the class precedence list
because~@\n there ~A in the local precedence relations.~@\n ~A because:~{~% ~A~}.")[:EX..
1: (SB-PCL:
2: (SB-PCL:
3: (SB-PCL:
4: ((LAMBDA (SB-PCL::.PV. SB-PCL:
SB-PCL:
5: ((SB-PCL:
#<unavailable argument> #<LAYERED-CLASS PERSON>)[:EXTERNAL]
6: ((LAMBDA (SB-PCL::.PV. SB-PCL:
SB-PCL:
7: ((FLET CALL-NEXT-METHOD))
8: ((SB-PCL:
9: ((FLET CALL-NEXT-METHOD))
10: ((SB-PCL:
11: ((FLET CALL-NEXT-METHOD))
12: ((SB-PCL:
13: ((FLET CALL-NEXT-METHOD) ..)
14: ((SB-PCL:
15: ((SB-PCL:
argument> #<unavailable argument> #<LAYERED-CLASS PERSON> PERSON)[:EXTERNAL]
16: (SB-PCL:
ADDRESS-MIXIN) NIL NIL NIL #S(SB-C:
:TOPLEVEL-
17: (SB-INT:
Changed in sbcl: | |
importance: | Undecided → Medium |
status: | New → Confirmed |
'define- layered- class' and 'deflayer' - what are these? containedness of the example
Closing as incomplete due to age of the report and non-self-