GNU bug report logs -
#6376
23.2; byte compile add-to-list report free variable
Previous Next
Reported by: Kevin Ryde <user42 <at> zip.com.au>
Date: Tue, 8 Jun 2010 01:56:01 UTC
Severity: wishlist
Found in version 23.2
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
> I made a mistake with a variable name to add-to-list and wondered if the
> byte compiler might report
> (add-to-list 'nosuchvariable ...)
> as a free variable, similar to the report for
I use the code below for add-hook:
(byte-defop-compiler-1 remove-hook byte-compile-add-hook)
(defun byte-compile-add-hook (form)
(let ((sym (car-safe (cdr-safe form))))
(when (and (eq 'quote (car-safe sym))
(setq sym (car-safe (cdr sym)))
(symbolp sym))
;; Gross hack: We want to do the sanity checks just as we would for
;; a setq so we first do a setq and then pop the byte-code that was
;; just pushed by byte-compile-variable-ref.
(let ((byte-compile-output byte-compile-output)
(byte-compile-maxdepth byte-compile-maxdepth)
(byte-compile-depth byte-compile-depth))
(byte-compile-variable-ref 'byte-varset sym)))
(byte-compile-normal-call form)))
so I'm in favor of such a change, but it would need to be cleaned up such
that your byte-compile-check-assign is also used for
byte-compile-variable-ref (i.e. the code should be hoisted out of
byte-compile-variable-ref). Also, note that add-to-list is not only
a "varset" but also a "varref" (it reads the var before assigning to it).
Stefan
This bug report was last modified 3 years and 170 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.