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

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

[debbugs-tracker] bug#11258: closed (24.1.50; lexical binding inconsiste


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#11258: closed (24.1.50; lexical binding inconsistencies)
Date: Wed, 28 Aug 2013 18:29:01 +0000

Your message dated Wed, 28 Aug 2013 14:28:29 -0400
with message-id <address@hidden>
and subject line Re: bug#11258: 24.1.50; lexical binding inconsistencies
has caused the debbugs.gnu.org bug report #11258,
regarding 24.1.50; lexical binding inconsistencies
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
11258: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11258
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: 24.1.50; lexical binding inconsistencies Date: Mon, 16 Apr 2012 22:03:30 +0200
Hi,

I have an elisp file with this content:

; Test  -*- lexical-binding: t -*-

(defun test1 (arg)
  (interactive "i")
  (funcall (lambda () arg)))

(defun test2 (arg)
  (interactive "i")
  ((lambda () arg)))

;; (test1 nil)
;; (test2 nil)

I visit the file and do M-x eval-buffer.  Then I do the following:

1(a) Put point after (test1 nil) and hit C-x C-e: nil
1(b) M-x test1: nil
2(a) Put point after (test2 nil) and hit C-x C-e
     If I had loaded my .emacs before, I get nil
     With emacs -Q, I get: Lisp error: (void-variable arg)
2(b) M-x test2: Lisp error: (void-variable arg)

Now, byte compile the file, and load the compiled code.  Now, repeat
the above four tests.  You always get nil, and no error.

That's strange - shouldn't the result always be nil?  If not, this
(surprising) behavior should be documented in the manual.

I've experimented a lot, and found that the results for 2(a) are not
always the same.

OTOH, the compiled code always works as expected (result nil).


Regards,

Michael.


In GNU Emacs 24.1.50.1 (i486-pc-linux-gnu, GTK+ Version 3.2.3)
 of 2012-04-10 on zelenka, modified by Debian
 (emacs-snapshot package, version 2:20120410-1)
Windowing system distributor `The X.Org Foundation', version 11.0.11104000
Configured using:
 `configure '--build' 'i486-linux-gnu' '--host' 'i486-linux-gnu'
 '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
 '--localstatedir=/var' '--infodir=/usr/share/info'
 '--mandir=/usr/share/man' '--with-pop=yes'
 
'--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.1.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.1.50/site-lisp:/usr/share/emacs/site-lisp'
 '--without-compress-info' '--with-crt-dir=/usr/lib/i386-linux-gnu/'
 '--with-x=yes' '--with-x-toolkit=gtk3' '--with-imagemagick=yes'
 'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu'
 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2''




--- End Message ---
--- Begin Message --- Subject: Re: bug#11258: 24.1.50; lexical binding inconsistencies Date: Wed, 28 Aug 2013 14:28:29 -0400 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)
> Testing my recipe today with (emacs-version) => "GNU Emacs 24.3.50.1
> (x86_64-pc-linux-gnu, GTK+ Version 3.4.2)\n of 2013-04-10 on dex,
> modified by Debian", I see that the behavior is still the same.

I installed the trivial patch below, which should fix it.  Sorry for
that ridiculous delay.


        Stefan


=== modified file 'src/eval.c'
--- src/eval.c  2013-08-12 07:12:07 +0000
+++ src/eval.c  2013-08-28 18:24:19 +0000
@@ -2149,6 +2149,8 @@
   if (SYMBOLP (fun) && !NILP (fun)
       && (fun = XSYMBOL (fun)->function, SYMBOLP (fun)))
     fun = indirect_function (fun);
+  else
+    fun = Ffunction (Fcons (fun, Qnil));
 
   if (SUBRP (fun))
     {


--- End Message ---

reply via email to

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