GNU bug report logs -
#27674
26.0.50; cl-progv: strange scoping due to implementation
Previous Next
Reported by: Michael Heerdegen <michael_heerdegen <at> web.de>
Date: Wed, 12 Jul 2017 21:54:02 UTC
Severity: normal
Tags: notabug, wontfix
Found in version 26.0.50
Done: npostavs <at> users.sourceforge.net
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
npostavs <at> users.sourceforge.net writes:
> Michael Heerdegen <michael_heerdegen <at> web.de> writes:
>
> > The way `cl-progv' is implemented, we have some strange effects
> > happening to closures in the body. For example, with lexical-binding
> > on,
> >
> > (let ((x 0))
> > (cl-progv (list 'x) (list 1)
> > (funcall (lambda () x))))
> >
> > yields 0, and
> >
> > (cl-progv (list 'x) (list 1)
> > (funcall (lambda () x)))
> >
> > yields 1. That isn't consistent (FWIW I would expect `1' in both
> > cases).
>
> IMO, this is a bug in your program
Why?
>, this yields 1:
>
> (progn
> (defvar x)
> (let ((x 0))
> (cl-progv (list 'x) (list 1)
> (funcall (lambda () x)))))
Sure, but that's something different. I didn't want a special variable
in my example. The doc of `cl-progv' doesn't mention that the symbols
must correspond to special variables. Do I miss something?
Michael.
This bug report was last modified 8 years and 1 day ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.