From debbugs-submit-bounces@debbugs.gnu.org Wed Feb 08 04:23:25 2012 Received: (at submit) by debbugs.gnu.org; 8 Feb 2012 09:23:25 +0000 Received: from localhost ([127.0.0.1]:59979 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Rv3kK-00035L-LD for submit@debbugs.gnu.org; Wed, 08 Feb 2012 04:23:25 -0500 Received: from eggs.gnu.org ([140.186.70.92]:33117) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Rv3kH-000357-EL for submit@debbugs.gnu.org; Wed, 08 Feb 2012 04:23:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Rv3j9-0005k2-DT for submit@debbugs.gnu.org; Wed, 08 Feb 2012 04:22:15 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([140.186.70.17]:47947) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rv3j9-0005jy-Bv for submit@debbugs.gnu.org; Wed, 08 Feb 2012 04:22:11 -0500 Received: from eggs.gnu.org ([140.186.70.92]:56134) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rv3j3-0005YK-HY for bug-gnu-emacs@gnu.org; Wed, 08 Feb 2012 04:22:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Rv3iy-0005i5-3a for bug-gnu-emacs@gnu.org; Wed, 08 Feb 2012 04:22:05 -0500 Received: from mail-lpp01m020-f169.google.com ([209.85.217.169]:42674) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rv3ix-0005he-Kq for bug-gnu-emacs@gnu.org; Wed, 08 Feb 2012 04:21:59 -0500 Received: by lbbgg6 with SMTP id gg6so182347lbb.0 for ; Wed, 08 Feb 2012 01:21:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=INprSfZSilbe5F2+b2/7D24vHaYtnpg/5xe8hh8FcZU=; b=Bd77qcvITr8vIL+IKGRSKRu5D+krnFqOUJqVBOLOCUThJz8y/S4yAotkJVle4B/fDs 6Hoi1TKRML3hET/LjBRorjnvz/2cDP7nJS+F4DiHZ5ulnXl8ssialP1Z3JkjI9X7apbf t0Iqz+zoJfBAucAEaWLqqDHXXtJziHEEtU87Q= MIME-Version: 1.0 Received: by 10.152.112.132 with SMTP id iq4mr14733697lab.28.1328692918371; Wed, 08 Feb 2012 01:21:58 -0800 (PST) Received: by 10.152.21.97 with HTTP; Wed, 8 Feb 2012 01:21:58 -0800 (PST) Date: Wed, 8 Feb 2012 09:21:58 +0000 Message-ID: Subject: 24.0.93; variable declared with defvar is not recognized as special From: Oleksandr Manzyuk To: bug-gnu-emacs@gnu.org Content-Type: text/plain; charset=UTF-8 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -3.4 (---) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.4 (---) This bug report will be sent to the Bug-GNU-Emacs mailing list and the GNU bug tracker at debbugs.gnu.org. Please check that the From: line contains a valid email address. After a delay of up to one day, you should receive an acknowledgement at that address. Please write in English if possible, as the Emacs maintainers usually do not have translators for other languages. Please describe exactly what actions triggered the bug, and the precise symptoms of the bug. If you can, give a recipe starting from `emacs -Q': The variable `pcomplete-stub' from `pcomplete.el' is declared using defvar. The top comment of the file contains -*- lexical-binding: t -*-, so `pcomplete-stub' should be a special variable. This is not the case: 1. emacs -Q 2. M-: (boundp 'pcomplete-stub) RET ==> nil 3. M-x shell 4. M-: (boundp 'pcomplete-stub) RET ==> t 5. M-: (special-variable-p 'pcomplete-stub) RET ==> nil 6. Open the file `pcomplete.el' (for example, by looking up the variable `pcomplete-stub') and M-x eval-buffer. Now (special-variable-p 'pcomplete-stub) evaluates to t. If Emacs crashed, and you have the Emacs process in the gdb debugger, please include the output from the following gdb commands: `bt full' and `xbacktrace'. For information about debugging Emacs, please read the file /home/manzyuk/share/emacs/24.0.93/etc/DEBUG. In GNU Emacs 24.0.93.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.20.1) of 2012-02-07 on paddy Windowing system distributor `The X.Org Foundation', version 11.0.10706000 Configured using: `configure '--prefix=/home/manzyuk'' 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_US.UTF-8 value of $XMODIFIERS: nil locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Emacs-Lisp Minor modes in effect: shell-dirtrack-mode: t tooltip-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent input: M-: ( b o u n d p SPC ' p c o m p l e t e - s t u b ) M-x s h e l l M-: M-p M-: ( s p e c i a l - v a r i a b l e - p SPC ' p c o m p l e t e - s t u b ) C-h v p c o m p l e t e - s t u b C-x o C-e C-b C-b C-b C-b M-x e v a l SPC b u f f e r M-: M-p M-x r e p o r t SPC Recent messages: For information about GNU Emacs and the GNU system, type C-h C-a. nil t nil Type C-x 1 to delete the help window. uncompressing pcomplete.el.gz...done Loading vc-git...done t Load-path shadows: None found. Features: (shadow sort gnus-util mail-extr message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mailabbrev mail-utils gmm-utils mailheader emacsbug cl vc-git jka-compr find-func pp help-mode easymenu view help-fns ansi-color shell pcomplete comint regexp-opt ring time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces cus-face files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs) From debbugs-submit-bounces@debbugs.gnu.org Thu Feb 09 16:53:34 2012 Received: (at 10761-done) by debbugs.gnu.org; 9 Feb 2012 21:53:35 +0000 Received: from localhost ([127.0.0.1]:34117 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Rvbvp-00031g-Gi for submit@debbugs.gnu.org; Thu, 09 Feb 2012 16:53:34 -0500 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:56959) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Rvbvn-00031Y-2I for 10761-done@debbugs.gnu.org; Thu, 09 Feb 2012 16:53:32 -0500 Received: from faina.iro.umontreal.ca (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id q19LqKkC008355; Thu, 9 Feb 2012 16:52:20 -0500 Received: by faina.iro.umontreal.ca (Postfix, from userid 20848) id 37D96130009; Thu, 9 Feb 2012 16:52:20 -0500 (EST) From: Stefan Monnier To: Oleksandr Manzyuk Subject: Re: bug#10761: 24.0.93; variable declared with defvar is not recognized as special Message-ID: References: Date: Thu, 09 Feb 2012 16:52:20 -0500 In-Reply-To: (Oleksandr Manzyuk's message of "Wed, 8 Feb 2012 09:21:58 +0000") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.92 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV4127=0 X-NAI-Spam-Version: 2.2.0.9309 : core <4127> : streams <727185> : uri <1062791> X-Spam-Score: -3.5 (---) X-Debbugs-Envelope-To: 10761-done Cc: 10761-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.5 (---) > 1. emacs -Q > 2. M-: (boundp 'pcomplete-stub) RET ==> nil > 3. M-x shell > 4. M-: (boundp 'pcomplete-stub) RET ==> t > 5. M-: (special-variable-p 'pcomplete-stub) RET ==> nil > 6. Open the file `pcomplete.el' (for example, by looking up the variable > `pcomplete-stub') and M-x eval-buffer. Now (special-variable-p > 'pcomplete-stub) evaluates to t. Thanks for catching this. It's actually a pretty bad bug. I've installed the patch below which I believe fixes the problem, Stefan === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-02-09 20:27:54 +0000 +++ lisp/ChangeLog 2012-02-09 21:50:23 +0000 @@ -1,3 +1,11 @@ +2012-02-09 Stefan Monnier + + * emacs-lisp/bytecomp.el (byte-compile-file-form-defvar): + Don't fallback on byte-compile-defvar. Optimize (defvar foo) away. + (byte-compile-tmp-var): New const. + (byte-compile-defvar): Use it to minimize .elc size. + Just use `defvar' rather than simulate it (bug#10761). + 2012-02-09 Glenn Morris * files.el (rename-uniquely): Doc fix. (Bug#3806) === modified file 'lisp/emacs-lisp/bytecomp.el' --- lisp/emacs-lisp/bytecomp.el 2012-01-19 07:21:25 +0000 +++ lisp/emacs-lisp/bytecomp.el 2012-02-09 19:09:21 +0000 @@ -2237,10 +2237,6 @@ (put 'defvar 'byte-hunk-handler 'byte-compile-file-form-defvar) (put 'defconst 'byte-hunk-handler 'byte-compile-file-form-defvar) (defun byte-compile-file-form-defvar (form) - (if (null (nth 3 form)) - ;; Since there is no doc string, we can compile this as a normal form, - ;; and not do a file-boundary. - (byte-compile-keep-pending form) (when (and (symbolp (nth 1 form)) (not (string-match "[-*/:$]" (symbol-name (nth 1 form)))) (byte-compile-warning-enabled-p 'lexical)) @@ -2249,6 +2245,9 @@ (push (nth 1 form) byte-compile-bound-variables) (if (eq (car form) 'defconst) (push (nth 1 form) byte-compile-const-variables)) + (if (and (null (cddr form)) ;No `value' provided. + (eq (car form) 'defvar)) ;Just a declaration. + nil (cond ((consp (nth 2 form)) (setq form (copy-sequence form)) (setcar (cdr (cdr form)) @@ -4124,8 +4123,10 @@ (push (nth 1 (nth 1 form)) byte-compile-global-not-obsolete-vars)) (byte-compile-normal-call form)) +(defconst byte-compile-tmp-var (make-symbol "def-tmp-var")) + (defun byte-compile-defvar (form) - ;; This is not used for file-level defvar/consts with doc strings. + ;; This is not used for file-level defvar/consts. (when (and (symbolp (nth 1 form)) (not (string-match "[-*/:$]" (symbol-name (nth 1 form)))) (byte-compile-warning-enabled-p 'lexical)) @@ -4148,32 +4149,21 @@ (push var byte-compile-bound-variables) (if (eq fun 'defconst) (push var byte-compile-const-variables)) - (byte-compile-body-do-effect - (list - ;; Put the defined variable in this library's load-history entry - ;; just as a real defvar would, but only in top-level forms. - (when (and (cddr form) (null byte-compile-current-form)) - `(setq current-load-list (cons ',var current-load-list))) - (when (> (length form) 3) (when (and string (not (stringp string))) (byte-compile-warn "third arg to `%s %s' is not a string: %s" fun var string)) - `(put ',var 'variable-documentation ,string)) + (byte-compile-form-do-effect (if (cddr form) ; `value' provided - (let ((byte-compile-not-obsolete-vars (list var))) - (if (eq fun 'defconst) - ;; `defconst' sets `var' unconditionally. - (let ((tmp (make-symbol "defconst-tmp-var"))) ;; Quote with `quote' to prevent byte-compiling the body, ;; which would lead to an inf-loop. - `(funcall '(lambda (,tmp) (defconst ,var ,tmp)) - ,value)) - ;; `defvar' sets `var' only when unbound. - `(if (not (default-boundp ',var)) (setq-default ,var ,value)))) - (when (eq fun 'defconst) + `(funcall '(lambda (,byte-compile-tmp-var) + (,fun ,var ,byte-compile-tmp-var ,@(nthcdr 3 form))) + ,value) + (if (eq fun 'defconst) ;; This will signal an appropriate error at runtime. - `(eval ',form))) - `',var)))) + `(eval ',form) + ;; A simple (defvar foo) just returns foo. + `',var))))) (defun byte-compile-autoload (form) (byte-compile-set-symbol-position 'autoload) From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 10 11:04:57 2012 Received: (at 10761-done) by debbugs.gnu.org; 10 Feb 2012 16:04:57 +0000 Received: from localhost ([127.0.0.1]:35092 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Rvsy1-0006Hh-7v for submit@debbugs.gnu.org; Fri, 10 Feb 2012 11:04:57 -0500 Received: from mail-lpp01m010-f44.google.com ([209.85.215.44]:33997) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Rvsxy-0006HU-Th for 10761-done@debbugs.gnu.org; Fri, 10 Feb 2012 11:04:55 -0500 Received: by lahl5 with SMTP id l5so2527426lah.3 for <10761-done@debbugs.gnu.org>; Fri, 10 Feb 2012 08:03:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=m6owSGZPFDhfpSKstyFn4SPZmBy+/bdt7b+ZzdRmiAs=; b=aat96R8fC/FKpepkLj1aawpfGSwXZg5zVP/l6bu+vVu14AiU6D8xrmrt3Npv9ADkMA WGvSayBPDAKq5Ab1lMAzDunHlz8HMXvY/afPnllPcRgsOC8EisDjRdZ1Bd3eRleD8e4E KDduOKwJ8t5ggEn5hQY6/yhZEDTueuzkfyijw= MIME-Version: 1.0 Received: by 10.112.87.234 with SMTP id bb10mr2303703lbb.33.1328889814862; Fri, 10 Feb 2012 08:03:34 -0800 (PST) Received: by 10.152.21.97 with HTTP; Fri, 10 Feb 2012 08:03:34 -0800 (PST) In-Reply-To: References: Date: Fri, 10 Feb 2012 16:03:34 +0000 Message-ID: Subject: Re: bug#10761: 24.0.93; variable declared with defvar is not recognized as special From: Oleksandr Manzyuk To: Stefan Monnier Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 10761-done Cc: 10761-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) On Thu, Feb 9, 2012 at 9:52 PM, Stefan Monnier w= rote: >> 1. emacs -Q >> 2. M-: (boundp 'pcomplete-stub) RET =3D=3D> nil >> 3. M-x shell >> 4. M-: (boundp 'pcomplete-stub) RET =3D=3D> t >> 5. M-: (special-variable-p 'pcomplete-stub) RET =3D=3D> nil >> 6. Open the file `pcomplete.el' (for example, by looking up the variable >> `pcomplete-stub') and M-x eval-buffer. =C2=A0Now (special-variable-p >> 'pcomplete-stub) evaluates to t. > > Thanks for catching this. =C2=A0It's actually a pretty bad bug. > I've installed the patch below which I believe fixes the problem, Thanks. After updating to the newest version and manually byte-compiling `pcomplete.el', the problem is gone. Is 'make && make install' not supposed to byte-recompile the ELisp libraries, too? --=20 Oleksandr Manzyuk http://oleksandrmanzyuk.wordpress.com From debbugs-submit-bounces@debbugs.gnu.org Fri Feb 10 14:01:32 2012 Received: (at 10761-done) by debbugs.gnu.org; 10 Feb 2012 19:01:32 +0000 Received: from localhost ([127.0.0.1]:35241 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Rvvit-0002Rp-Fv for submit@debbugs.gnu.org; Fri, 10 Feb 2012 14:01:31 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.183]:47715) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Rvvir-0002Rd-4P for 10761-done@debbugs.gnu.org; Fri, 10 Feb 2012 14:01:29 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AssIAKhoNU9MCqD0/2dsb2JhbABErSSBOX6BCIFyAQEEAVYjBQsLNBIUGA0kiA+5B4kmgw8MBwgGBAUBAgGDYwUhEwYCAwEBg1IEiEmbD4Ra X-IronPort-AV: E=Sophos;i="4.73,397,1325480400"; d="scan'208";a="162521860" Received: from 76-10-160-244.dsl.teksavvy.com (HELO pastel.home) ([76.10.160.244]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 10 Feb 2012 14:00:08 -0500 Received: by pastel.home (Postfix, from userid 20848) id 8B20958F68; Fri, 10 Feb 2012 14:00:08 -0500 (EST) From: Stefan Monnier To: Oleksandr Manzyuk Subject: Re: bug#10761: 24.0.93; variable declared with defvar is not recognized as special Message-ID: References: Date: Fri, 10 Feb 2012 14:00:08 -0500 In-Reply-To: (Oleksandr Manzyuk's message of "Fri, 10 Feb 2012 16:03:34 +0000") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.92 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 10761-done Cc: 10761-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) > Thanks. After updating to the newest version and manually > byte-compiling `pcomplete.el', the problem is gone. Is 'make && make > install' not supposed to byte-recompile the ELisp libraries, too? Yes, "make" is supposed to recompile the modified ELisp files. But I'd guess that pcomplete.el was not modified, so it was not recompiled. Stefan From unknown Thu Sep 11 06:21:07 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sat, 10 Mar 2012 12:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator