Subject: bug#27016: possible bug in `defsetf'

From: [email-masked]
Date: Sun, 02 Jul 2017 16:47:36 -0400

Stefan Monnier <[email-masked]> writes:

>> Is the difference in Emacs-23 not just eager macroexpansion?
>
> Could be.  But I'm more worried about the byte-compiled case.

I hope someone will correct me if I've gotten mixed up again, but I
believe the byte-compiled case already works fine:

    ~/src/emacs$ cat bug-27016-defsetf.el
    (require 'cl)

    (defvar pair nil)
    (setq pair (cons 3 4))
    (when nil
      (defalias 'foobar 'cons)
      (defsetf foobar setcar))
    ~/src/emacs$ emacs -Q -batch -f batch-byte-compile bug-27016-defsetf.el

    In toplevel form:
    bug-27016-defsetf.el:1:1:Warning: cl package required at runtime
    bug-27016-defsetf.el:3:1:Warning: global/dynamic var ‘pair’ lacks a prefix
    ~/src/emacs$ emacs -Q -batch -l bug-27016-defsetf.elc --eval '(setf (foobar pair) 0)'
    Symbol’s function definition is void: \(setf\ foobar\)