]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/advice.el (ad-assemble-advised-definition):
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 26 Oct 2012 18:01:30 +0000 (14:01 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 26 Oct 2012 18:01:30 +0000 (14:01 -0400)
Silence bogus compiler warnings for ad-do-it.

lisp/ChangeLog
lisp/emacs-lisp/advice.el

index c43b0c136e39413ddd968a667b0ca7e4b4be1f0e..7cb9fb0793cf69458996c323c66965392dee87a4 100644 (file)
@@ -1,5 +1,8 @@
 2012-10-26  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * emacs-lisp/advice.el (ad-assemble-advised-definition):
+       Silence bogus compiler warnings for ad-do-it.
+
        * bookmark.el (bookmark-completing-read): Set the completion category
        to `bookmark' (bug#11131).
 
index 007871aa3a60da759109324c84dea4ccfae341ac..bd85238e23e9ff81015ae69ba54baa917e258ecf 100644 (file)
@@ -2897,8 +2897,11 @@ definition, INTERACTIVE if non-nil is the interactive form to be used,
 ORIG is a form that calls the body of the original unadvised function,
 and BEFORES, AROUNDS and AFTERS are the lists of advices with which ORIG
 should be modified.  The assembled function will be returned."
-
-  (let (before-forms around-form around-form-protected after-forms definition)
+  ;; The ad-do-it call should always have the right number of arguments,
+  ;; but the compiler might signal a bogus warning because it checks the call
+  ;; against the advertised calling convention.
+  (let ((around-form `(setq ad-return-value (with-no-warnings ,orig)))
+        before-forms around-form-protected after-forms definition)
     (dolist (advice befores)
       (cond ((and (ad-advice-protected advice)
                   before-forms)
@@ -2911,7 +2914,6 @@ should be modified.  The assembled function will be returned."
                      (append before-forms
                              (ad-body-forms (ad-advice-definition advice)))))))
 
-    (setq around-form `(setq ad-return-value ,orig))
     (dolist (advice (reverse arounds))
       ;; If any of the around advices is protected then we
       ;; protect the complete around advice onion: