[Top][All Lists]

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

Re: pure-fns in byte-opt.el

From: Mark Oteiza
Subject: Re: pure-fns in byte-opt.el
Date: Wed, 26 Jul 2017 22:36:08 -0400
User-agent: Mutt/1.8.3 (2017-05-23)

On 26/07/17 at 05:33pm, Eli Zaretskii wrote:
Date: Tue, 25 Jul 2017 21:00:00 -0400
From: Mark Oteiza <address@hidden>
Cc: address@hidden

The "listp" in the error makes me wonder if the byte compiler is
perhaps turning a quoted form into a string.

If you could run the offending command under a debugger and show both
C-level and Lisp-level backtrace from the error, maybe we could become
wiser.  (Let me know if you need help in staging the experiment and/or
collecting the data after you catch the error.)

Here is the point during the build the error happens:

"../../src/bootstrap-emacs" -batch --no-site-file --no-site-lisp -L . -l
unidata-gen \
 -f unidata-gen-file ../../lisp/international/uni-decomposition.el .
 Loading macroexp.elc...
 Wrong type argument: listp, "頩"

I set a breakpoint at wrong_type_argument

Thread 1 "bootstrap-emacs" hit Breakpoint 4, wrong_type_argument (
predicate=XIL(0x8550), value=XIL(0x3dee414)) at data.c:154
154       xsignal2 (Qwrong_type_argument, predicate, value);
(gdb) xbacktrace
"unidata-gen-table-word-list" (0xffffb690)
"unidata-gen-table-decomposition" (0xffffbb20)
"unidata-gen-file" (0xffffc108)
"funcall" (0xffffc100)
"if" (0xffffc2c0)
"cond" (0xffffc430)
"let*" (0xffffc5d0)
"while" (0xffffc760)
"let*" (0xffffc900)
"progn" (0xffffca30)
"if" (0xffffcb70)
"let" (0xffffcd50)
"let" (0xffffcf30)
"command-line-1" (0xffffd0b0)
"command-line" (0xffffd300)
"unwind-protect" (0xffffd4f0)
"let" (0xffffd6d0)
"if" (0xffffd840)
"normal-top-level" (0xffffd9c0)

I would need help with digging deeper.  Also, I made an error in my
OP--it is make-vector being marked pure that's a problem:

diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index 962a7ae5cd..297e43884f 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -1281,7 +1281,8 @@ byte-optimize-set
;; errors to compile time.

(let ((pure-fns
-       '(concat symbol-name regexp-opt regexp-quote string-to-syntax)))
+       '(concat symbol-name regexp-opt regexp-quote string-to-syntax
+         make-vector)))
  (while pure-fns
    (put (car pure-fns) 'pure t)
    (setq pure-fns (cdr pure-fns)))

reply via email to

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