GNU bug report logs -
#31792
27.0.50; Regression in #'labels, recent versions
Previous Next
Reported by: Aidan Kehoe <kehoea <at> parhasard.net>
Date: Mon, 11 Jun 2018 23:12:01 UTC
Severity: normal
Tags: fixed, patch
Found in versions 27.0.50, 25.3
Fixed in version 26.2
Done: Noam Postavsky <npostavs <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
Message #21 received at 31792 <at> debbugs.gnu.org (full text, mbox):
In article <mailman.1699.1528759928.1292.bug-gnu-emacs <at> gnu.org> you wrote:
> found 31792 25.3
> quit
> Aidan Kehoe <kehoea <at> parhasard.net> writes:
>> When I do the same in the emacs 22.1.1 that Apple built and shipped with
>> my OS, I get a compiled function object, as is much closer to being the
>> correct behaviour.
> Seems to have regressed in Emacs 25, cl-labels still works correctly.
> Here's a smaller reproducer:
> (labels ((foo () t))
> #'foo) ;=> foo
> (cl-labels ((foo () t))
> #'foo) ;=> (lambda nil t)
Just as a matter of interest, the doc strings for both these functions
are poor.
That for cl-labels says "make temporary function bindings" without saying
what a "function binding" is (it's not obvious), without saying what
functions (?or symbols) are being bound, and doesn't say whether they get
bound one after the other (in `let*' fashion) or all at once (in `let'
fashion).
It goes on to say "The bindings can be recursive, ...". This is
gibberish to me.
Further, "the scoping is lexical". The scoping of what is lexical? And
in what?
I dare say I could fathom out most of these things with effort, but I
shouldn't have to. Maybe this macro could be of use to me, but with the
doc string as it is, I'll never find out. Pity.
--
Alan Mackenzie (Nuremberg, Germany).
This bug report was last modified 7 years and 30 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.