I narrow down the problem. If I load the following code which is taken from eieio-core.el, line 84, (I added (require 'cl-lib)) then (progn (byte-compile 'my-this-should-raise-error) (my-this-should-raise-error)) does not raise an error. (progn (require 'cl-lib) ;; Arrange for field access not to bother checking if the access is indeed ;; made to an eieio--class object. (cl-declaim (optimize (safety 0))) (cl-defstruct (eieio--class (:constructor nil) (:constructor eieio--class-make (name)) (:include cl--class) (:copier nil)) children initarg-tuples ;; initarg tuples list (class-slots nil :type eieio--slot) class-allocation-values ;; class allocated value vector default-object-cache ;; what a newly created object would look like. ; This will speed up instantiation time as ; only a `copy-sequence' will be needed, instead of ; looping over all the values and setting them from ; the default. options ;; storage location of tagged class option ; Stored outright without modifications or stripping ) ;; Set it back to the default value. (cl-declaim (optimize (safety 1)))) Best regards, Sho Takemori