GNU bug report logs -
#6275
23.2; warning-suppress-types is void after defadvice
Previous Next
Reported by: SAITO Takuya <tabmore <at> gmail.com>
Date: Wed, 26 May 2010 15:46:01 UTC
Severity: normal
Merged with 6373,
6682
Found in version 23.2
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your message dated Tue, 08 Jun 2010 21:22:25 -0400
with message-id <jwv631t80nv.fsf-monnier+emacs <at> gnu.org>
and subject line Re: bug#6275: 23.2; warning-suppress-types is void after defadvice
has caused the GNU bug report #6275,
regarding 23.2; advice.el unbinding warning-suppress-types
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
6275: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6275
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
If advice.el byte-compiles a piece of advice which causes byte compiler
warnings, then it unbinds `warning-suppress-types'. For example
(defun foo ()
(message "hi"))
(defadvice foo (after my-advice activate compile)
(car))
(display-warning 'bar "some thing")
=>
Error void-variable warning-suppress-types
It seems ad-compile-function does a let bind of warning-suppress-types
without ensuring warnings.el has been loaded.
In GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0)
of 2010-05-16 on raven, modified by Debian
configured using `configure '--build' 'i486-linux-gnu' '--build' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.2/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.2/leim' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS=''
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: en_AU
value of $XMODIFIERS: nil
locale-coding-system: iso-latin-1-unix
default enable-multibyte-characters: t
[Message part 3 (message/rfc822, inline)]
forcemerge 6275 6373
thanks
> Debugger entered--Lisp error: (void-variable warning-suppress-types)
[...]
> ad-compile-function() binds warning-suppress-types with let.
> I guess warnings.el is loaded inside of that let-binding.
Indeed, thank you. I've installed the patch below which should fix it.
Stefan
=== modified file 'lisp/emacs-lisp/advice.el'
--- lisp/emacs-lisp/advice.el 2010-02-15 20:03:22 +0000
+++ lisp/emacs-lisp/advice.el 2010-06-09 01:16:08 +0000
@@ -2684,6 +2684,8 @@
;; because `byte-compile' uses `fset':
(ad-with-auto-activation-disabled
(require 'bytecomp)
+ (require 'warnings) ;To define warning-suppress-types
+ ;before we let-bind it.
(let ((symbol (make-symbol "advice-compilation"))
(byte-compile-warnings byte-compile-warnings)
;; Don't pop up windows showing byte-compiler warnings.
This bug report was last modified 13 years and 227 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.