bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#11391: wrong-type-argument error in vc-bzr operations


From: Stefan Monnier
Subject: bug#11391: wrong-type-argument error in vc-bzr operations
Date: Wed, 02 May 2012 22:42:48 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux)

>   Debugger entered--Lisp error: (wrong-type-argument sequencep lambda)
>   #[(s) "..." [s 20 0 2 "..."] 3](lambda)
>   (etc)

Good catch, thank you.
I've installed the patch below which should fix it,


        Stefan


=== modified file 'lisp/ChangeLog'
--- lisp/ChangeLog      2012-04-29 01:48:23 +0000
+++ lisp/ChangeLog      2012-05-03 02:37:04 +0000
@@ -1,3 +1,11 @@
+2012-05-03  Stefan Monnier  <address@hidden>
+
+       * emacs-lisp/bytecomp.el
+       (byte-compile-file-form-custom-declare-variable): Compile all elements,
+       since cconv.el might have introduced :fun-body, internal-make-closure,
+       and friends for bytecomp to handle (bug#11391).
+       * custom.el (defcustom): Avoid ((λ ..) ..).
+
 2012-04-29  Chong Yidong  <address@hidden>
 
        * follow.el (follow-calc-win-end): Rewrite to handle partial

=== modified file 'lisp/custom.el'
--- lisp/custom.el      2012-04-14 01:46:06 +0000
+++ lisp/custom.el      2012-05-03 02:12:56 +0000
@@ -335,7 +335,7 @@
          ;; expression is checked by the byte-compiler, and that
          ;; lexical-binding is obeyed, so quote the expression with
          ;; `lambda' rather than with `quote'.
-         `(list (lambda () ,standard))
+         ``(funcall #',(lambda () ,standard))
        `',standard)
     ,doc
     ,@args))

=== modified file 'lisp/emacs-lisp/bytecomp.el'
--- lisp/emacs-lisp/bytecomp.el 2012-03-26 19:10:00 +0000
+++ lisp/emacs-lisp/bytecomp.el 2012-05-03 02:28:14 +0000
@@ -2267,19 +2267,7 @@
   (when (byte-compile-warning-enabled-p 'callargs)
     (byte-compile-nogroup-warn form))
   (push (nth 1 (nth 1 form)) byte-compile-bound-variables)
-  ;; Don't compile the expression because it may be displayed to the user.
-  ;; (when (eq (car-safe (nth 2 form)) 'quote)
-  ;;   ;; (nth 2 form) is meant to evaluate to an expression, so if we have the
-  ;;   ;; final value already, we can byte-compile it.
-  ;;   (setcar (cdr (nth 2 form))
-  ;;           (byte-compile-top-level (cadr (nth 2 form)) nil 'file)))
-  (let ((tail (nthcdr 4 form)))
-    (while tail
-      (unless (keywordp (car tail))      ;No point optimizing keywords.
-        ;; Compile the keyword arguments.
-        (setcar tail (byte-compile-top-level (car tail) nil 'file)))
-      (setq tail (cdr tail))))
-  form)
+  (byte-compile-keep-pending form))
 
 (put 'require 'byte-hunk-handler 'byte-compile-file-form-require)
 (defun byte-compile-file-form-require (form)






reply via email to

[Prev in Thread] Current Thread [Next in Thread]