[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#33828: 26.1; Unbound defvar across compilation units
From: |
Luís Oliveira |
Subject: |
bug#33828: 26.1; Unbound defvar across compilation units |
Date: |
Fri, 21 Dec 2018 12:02:55 +0000 |
Hello,
I think I've come across a bug.
$ cat f1.el
;;; f1.el --- -*-
lexical-binding: t; -*-
;;; Lexical binding is set to T, but the bug happens regardless.
(defvar my-special)
(provide 'f1)
$ cat f2.el
;;; f2.el --- -*-
lexical-binding: t; -*-
(require 'f1)
(defun f2-foo ()
(let ((my-special 123))
(f2-bar)))
(defun f2-bar ()
my-special)
(print (f2-bar))
$ emacs -Q -L . -f batch-byte-compile f2.el
In toplevel form:
f2.el:5:1:Warning: Unused lexical variable `my-special'
In f2-bar:
f2.el:10:3:Warning: reference to free variable `my-special'
Also:
$ emacs -Q -L . -batch -l f2.el
Symbol's value as variable is void: my-special
Changing f1.el's defvar to have an initial value makes the problem go
away, but this behaviour was unexpected to me. Moving defvar inside
f2.el also fixes it.
Cheers,
Luís
- bug#33828: 26.1; Unbound defvar across compilation units,
Luís Oliveira <=