emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Emacs-diffs] scratch/record 25aa500 5/5: Backward compatibility wit


From: Lars Brinkhoff
Subject: Re: [Emacs-diffs] scratch/record 25aa500 5/5: Backward compatibility with pre-existing struct instances.
Date: Wed, 29 Mar 2017 08:52:32 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

Stefan Monnier <address@hidden> writes:
>>          (let ((tag (intern (format "cl-struct-%s" name)))
>>                (type-and-named (get name 'cl-struct-type))
>>                (descs (get name 'cl-struct-slots)))
>> +          (if (null (car type-and-named))
>> +              (setq type-and-named (cons 'record (cdr type-and-named))))
>>            (cl-struct-define name nil (get name 'cl-struct-include)
>>                              (unless (and (eq (car type-and-named) 'vector)
>>                                           (null (cadr type-and-named))
>
> Hmm... if we're in this code, it means we're in the case of an old-old
> struct (once compiled before we introduced cl-struct-define), so it's
> definitely not using `record`s.

Good, I'll remove that code.


There's also a lingering FIXME that you added:

 (cl-defstruct (eieio--object
-               (:type vector)           ;We manage our own tagging system.
+               (:type vector) ;; FIXME!  ;We manage our own tagging system.
                (:constructor nil)

As far as I can see, the struct isn't used directly.  These definitions
are derived from it: eieio--object-class-tag, eieio--object-class-tag,
and eieio--object-num-slot.  The first two just aref slot 0, and the
second is 1.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]