Opened 11 years ago

Closed 11 years ago

#300 closed defect (fixed)

Gray streams aren't streams

Reported by: rschlatte Owned by: Mark Evenson
Priority: major Milestone: 1.2.0
Component: streams Version: 1.2.0-dev
Keywords: streams Cc:
Parent Tickets:


(require :gray-streams)
(subtypep 'gray-streams:fundamental-stream 'stream)
;; => NIL, T

This doesn't matter for flexi-streams and other libs, but cl-store has
a few DECLAREs. I don't know exactly when a type declaration is an
assertion in ABCL, but at least it is for a stream with nonzero safety.

(Reported by James M. Lawrence)

Change History (4)

comment:1 Changed 11 years ago by Mark Evenson

Keywords: streams added
Milestone: 1.2.0
Version: 1.2.0-dev

This is a longstanding problem, that I will try to address in the abcl-1.2.0 release cycle, as it messes up parts of FLEXI-STREAMS handling. Now that MOP is mature, it should be a bit easier to wedge the necessary work in.

See #166, #188, #223, #233.

A draft of the proposed architectural changes in trunk/abcl/doc/design/streams.

comment:2 Changed 11 years ago by Mark Evenson

Observed that the behavior changes once a GRAY-STREAM instance has been created:

CL-USER> (require :gray-streams)
; Loading jar:file:/home/evenson/work/abcl/dist/abcl.jar!/org/armedbear/lisp/gray-streams.abcl ...
; Loaded jar:file:/home/evenson/work/abcl/dist/abcl.jar!/org/armedbear/lisp/gray-streams.abcl (0.396 seconds)
CL-USER> (subtypep 'gray-streams:fundamental-stream 'stream)
CL-USER> (make-instance 'gray-streams:fundamental-stream)
CL-USER> (subtypep 'gray-streams:fundamental-stream 'stream)

maybe this exposes a problem with CLOS?

comment:3 Changed 11 years ago by Mark Evenson

MOP:FINALIZE-INHERITANCE is never called in gray-streams.lisp, so there is not a valid class precedence list.

Should we finalize the inheritance of all the classes in GRAY-STREAMS?

comment:4 Changed 11 years ago by Mark Evenson

Resolution: fixed
Status: newclosed

(In [14435]) Explicitly finalize inheritance for classes in GRAY-STREAMS.

Fixes #300.

Note: See TracTickets for help on using tickets.