[armedbear-ticket] [armedbear] #231: DEFSTRUCT accessor functions overwrite accessors in :INCLUDEd structs
armedbear
armedbear-devel at common-lisp.net
Tue Aug 7 11:53:48 UTC 2012
#231: DEFSTRUCT accessor functions overwrite accessors in :INCLUDEd structs
------------------------+---------------------------------------------------
Reporter: ehuelsmann | Owner: mevenson
Type: defect | Status: new
Priority: major | Milestone: 1.1.0
Component: libraries | Version:
Keywords: |
------------------------+---------------------------------------------------
Ralf Moeller reports:
The following file causes a problem in ABCL (1.1.0-dev-svn-14041) when
compiled (!) and loaded.
(in-package cl-user)
(defstruct a (s1 nil))
(defstruct (b (:include a) (:conc-name foo-)) (s2 nil))
(defstruct (c (:include a) (:conc-name foo-)) (s3 nil))
(defun test ()
(let ((x (make-b :s1 1 :s2 2)))
(foo-s1 x)))
CL-USER(4): (test)
#<THREAD "interpreter" {2EF7D41F}>: Debugger invoked on condition of type
SIMPLE-TYPE-ERROR
The value #<B {564434F7}> is not of type C.
Restarts:
0: TOP-LEVEL Return to top level.
[1] CL-USER(6): (lisp-implementation-version)
"1.1.0-dev-svn-14041"
[1] CL-USER(7):
The problem is that the defstruct declaration for c "overwrites" the
accessor foo-s1 generated by defstruct b.
If foo-s1 is called for a b instance, the type assertions introduced by
define-reader (and define-writer, see the
ABCL implementation for defstruct) cause the error described above.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/231>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
More information about the armedbear-ticket
mailing list