unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#38872: 27.0.50; Keywords can be let-bound
@ 2020-01-02 17:14 Thibault Polge
  2020-01-16 19:52 ` Stefan Kangas
  0 siblings, 1 reply; 10+ messages in thread
From: Thibault Polge @ 2020-01-02 17:14 UTC (permalink / raw)
  To: 38872

This sexp:

   (let ((:k 1)) :k)

evals to 1 in Emacs 25.3.1, 26.3, and HEAD
(d36adb544d984b91c70f6194da01344e4b2b6fc9) if and only if
`lexical-binding` is t.

If lexical-binding is nil, it raises an error, as I'd expect it to.

This is in contradiction with documentation at (info "Constant variables
(elisp)"). The issue also appears if the symbol's been interned with
(intern ":k")

Best regards,
Thibault


In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.12)
Windowing system distributor 'The X.Org Foundation', version 11.0.12005000
System Description: NixOS 20.03pre198214.4cd2cb43fb3 (Markhor)

Recent messages:
Executing scp -q   /tmp/1577983199.org thblt@k9.thb.lt:/var/www/paste.thb.lt//1577983199.org
(Shell command succeeded with no output)
Wrote /tmp/1577983199.org.html
Executing scp -q   /tmp/1577983199.org.html thblt@k9.thb.lt:/var/www/paste.thb.lt//1577983199.org.html
(Shell command succeeded with no output)
Wrote /tmp/1577983199.org.html
Pasted to https://paste.thb.lt/1577983199.org.html (on kill ring)
Quit
Saving file /home/thblt/temp/test.org...
Wrote /home/thblt/temp/test.org

Configured using:
 'configure
 --prefix=/nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1
 --disable-build-details --with-modules --with-x-toolkit=gtk3 --with-xft
 CFLAGS=-DMAC_OS_X_VERSION_MAX_ALLOWED=101200'

Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY
LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD PDUMPER
GMP

Important settings:
  value of $LANG: fr_FR.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Nix

Minor modes in effect:
  TeX-PDF-mode: t
  TeX-source-correlate-mode: t
  which-function-mode: t
  color-identifiers-mode: t
  outshine-mode: t
  pdf-occur-global-minor-mode: t
  magit-auto-revert-mode: t
  auto-revert-mode: t
  async-bytecomp-package-mode: t
  company-posframe-mode: t
  company-mode: t
  shell-dirtrack-mode: t
  outline-minor-mode: t
  super-save-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  show-smartparens-global-mode: t
  show-smartparens-mode: t
  smartparens-global-mode: t
  smartparens-mode: t
  recentf-mode: t
  beginend-global-mode: t
  beginend-prog-mode: t
  winner-mode: t
  which-key-mode: t
  popwin-mode: t
  ivy-posframe-mode: t
  eyebrowse-mode: t
  counsel-projectile-mode: t
  ivy-mode: t
  projectile-mode: t
  auto-compile-on-load-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/thblt/.emacs.d/lib/password-store/password-store hides /home/thblt/.nix-profile/share/emacs/site-lisp/password-store
/home/thblt/.nix-profile/share/emacs/site-lisp/site-start hides /run/current-system/sw/share/emacs/site-lisp/site-start
/home/thblt/.nix-profile/share/emacs/site-lisp/site-start hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/site-lisp/site-start
/home/thblt/.emacs.d/lib/auth-password-store/auth-source-pass hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/auth-source-pass
/home/thblt/.emacs.d/lib/org/lisp/ob-emacs-lisp hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-emacs-lisp
/home/thblt/.emacs.d/lib/org/lisp/ob-picolisp hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-picolisp
/home/thblt/.emacs.d/lib/org/lisp/org-attach hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-attach
/home/thblt/.emacs.d/lib/org/lisp/org-id hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-id
/home/thblt/.emacs.d/lib/org/lisp/ox-publish hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ox-publish
/home/thblt/.emacs.d/lib/org/lisp/org-indent hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-indent
/home/thblt/.emacs.d/lib/org/lisp/ob-core hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-core
/home/thblt/.emacs.d/lib/org/lisp/ob-hledger hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-hledger
/home/thblt/.emacs.d/lib/org/lisp/org-protocol hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-protocol
/home/thblt/.emacs.d/lib/org/lisp/ob-sqlite hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-sqlite
/home/thblt/.emacs.d/lib/org/lisp/ob-python hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-python
/home/thblt/.emacs.d/lib/org/lisp/org hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org
/home/thblt/.emacs.d/lib/org/lisp/org-pcomplete hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-pcomplete
/home/thblt/.emacs.d/lib/org/lisp/ob-java hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-java
/home/thblt/.emacs.d/lib/org/lisp/ob-lua hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-lua
/home/thblt/.emacs.d/lib/org/lisp/ob-mscgen hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-mscgen
/home/thblt/.emacs.d/lib/org/lisp/org-timer hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-timer
/home/thblt/.emacs.d/lib/org/lisp/org-lint hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-lint
/home/thblt/.emacs.d/lib/org/lisp/org-plot hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-plot
/home/thblt/.emacs.d/lib/org/lisp/ob-processing hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-processing
/home/thblt/.emacs.d/lib/org/lisp/ob-scheme hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-scheme
/home/thblt/.emacs.d/lib/org/lisp/ob-exp hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-exp
/home/thblt/.emacs.d/lib/org/lisp/ob-sql hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-sql
/home/thblt/.emacs.d/lib/org/lisp/org-faces hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-faces
/home/thblt/.emacs.d/lib/org/lisp/org-crypt hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-crypt
/home/thblt/.emacs.d/lib/org/lisp/org-table hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-table
/home/thblt/.emacs.d/lib/org/lisp/ox-md hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ox-md
/home/thblt/.emacs.d/lib/org/lisp/ox-ascii hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ox-ascii
/home/thblt/.emacs.d/lib/org/lisp/org-loaddefs hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-loaddefs
/home/thblt/.emacs.d/lib/org/lisp/org-colview hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-colview
/home/thblt/.emacs.d/lib/org/lisp/ob-C hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-C
/home/thblt/.emacs.d/lib/org/lisp/org-footnote hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-footnote
/home/thblt/.emacs.d/lib/org/lisp/org-feed hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-feed
/home/thblt/.emacs.d/lib/org/lisp/org-duration hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-duration
/home/thblt/.emacs.d/lib/org/lisp/ob-calc hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-calc
/home/thblt/.emacs.d/lib/org/lisp/ob-ebnf hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-ebnf
/home/thblt/.emacs.d/lib/org/lisp/ob-ocaml hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-ocaml
/home/thblt/.emacs.d/lib/org/lisp/ob-ditaa hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-ditaa
/home/thblt/.emacs.d/lib/org/lisp/org-mobile hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-mobile
/home/thblt/.emacs.d/lib/org/lisp/ob-gnuplot hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-gnuplot
/home/thblt/.emacs.d/lib/org/lisp/ox-texinfo hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ox-texinfo
/home/thblt/.emacs.d/lib/org/lisp/org-datetree hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-datetree
/home/thblt/.emacs.d/lib/org/lisp/ob-J hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-J
/home/thblt/.emacs.d/lib/org/lisp/ob-ruby hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-ruby
/home/thblt/.emacs.d/lib/org/lisp/ob-eval hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-eval
/home/thblt/.emacs.d/lib/org/lisp/ob-abc hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-abc
/home/thblt/.emacs.d/lib/org/lisp/ox-html hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ox-html
/home/thblt/.emacs.d/lib/org/lisp/ob-io hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-io
/home/thblt/.emacs.d/lib/org/lisp/org-compat hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-compat
/home/thblt/.emacs.d/lib/org/lisp/ob-perl hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-perl
/home/thblt/.emacs.d/lib/org/lisp/org-archive hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-archive
/home/thblt/.emacs.d/lib/org/lisp/ob-dot hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-dot
/home/thblt/.emacs.d/lib/org/lisp/ob-ref hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-ref
/home/thblt/.emacs.d/lib/org/lisp/org-habit hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-habit
/home/thblt/.emacs.d/lib/org/lisp/org-capture hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-capture
/home/thblt/.emacs.d/lib/org/lisp/ob-shell hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-shell
/home/thblt/.emacs.d/lib/org/lisp/ob-js hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-js
/home/thblt/.emacs.d/lib/org/lisp/ob-stan hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-stan
/home/thblt/.emacs.d/lib/org/lisp/ob-css hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-css
/home/thblt/.emacs.d/lib/org/lisp/ob-clojure hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-clojure
/home/thblt/.emacs.d/lib/org/lisp/ob-tangle hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-tangle
/home/thblt/.emacs.d/lib/org/lisp/org-element hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-element
/home/thblt/.emacs.d/lib/org/lisp/org-version hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-version
/home/thblt/.emacs.d/lib/org/lisp/ob-haskell hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-haskell
/home/thblt/.emacs.d/lib/org/lisp/org-src hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-src
/home/thblt/.emacs.d/lib/org/lisp/ob-lilypond hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-lilypond
/home/thblt/.emacs.d/lib/org/lisp/ob-groovy hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-groovy
/home/thblt/.emacs.d/lib/org/lisp/org-install hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-install
/home/thblt/.emacs.d/lib/org/lisp/ob-table hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-table
/home/thblt/.emacs.d/lib/org/lisp/ob-ledger hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-ledger
/home/thblt/.emacs.d/lib/org/lisp/ob-plantuml hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-plantuml
/home/thblt/.emacs.d/lib/org/lisp/ob-coq hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-coq
/home/thblt/.emacs.d/lib/org/lisp/org-inlinetask hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-inlinetask
/home/thblt/.emacs.d/lib/org/lisp/ox-beamer hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ox-beamer
/home/thblt/.emacs.d/lib/org/lisp/org-macs hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-macs
/home/thblt/.emacs.d/lib/org/lisp/org-entities hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-entities
/home/thblt/.emacs.d/lib/org/lisp/ox-odt hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ox-odt
/home/thblt/.emacs.d/lib/org/lisp/ob-lisp hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-lisp
/home/thblt/.emacs.d/lib/org/lisp/ob-fortran hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-fortran
/home/thblt/.emacs.d/lib/org/lisp/ob-forth hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-forth
/home/thblt/.emacs.d/lib/org/lisp/ox-icalendar hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ox-icalendar
/home/thblt/.emacs.d/lib/org/lisp/ob-comint hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-comint
/home/thblt/.emacs.d/lib/org/lisp/ob-screen hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-screen
/home/thblt/.emacs.d/lib/org/lisp/org-list hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-list
/home/thblt/.emacs.d/lib/org/lisp/ob-shen hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-shen
/home/thblt/.emacs.d/lib/org/lisp/org-mouse hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-mouse
/home/thblt/.emacs.d/lib/org/lisp/ob-vala hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-vala
/home/thblt/.emacs.d/lib/org/lisp/ob hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob
/home/thblt/.emacs.d/lib/org/lisp/ob-sed hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-sed
/home/thblt/.emacs.d/lib/org/lisp/ob-octave hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-octave
/home/thblt/.emacs.d/lib/org/lisp/ox-org hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ox-org
/home/thblt/.emacs.d/lib/org/lisp/org-ctags hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-ctags
/home/thblt/.emacs.d/lib/org/lisp/org-macro hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-macro
/home/thblt/.emacs.d/lib/org/lisp/ob-asymptote hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-asymptote
/home/thblt/.emacs.d/lib/org/lisp/ob-latex hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-latex
/home/thblt/.emacs.d/lib/org/lisp/ob-awk hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-awk
/home/thblt/.emacs.d/lib/org/lisp/ox hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ox
/home/thblt/.emacs.d/lib/org/lisp/ob-maxima hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-maxima
/home/thblt/.emacs.d/lib/org/lisp/ob-makefile hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-makefile
/home/thblt/.emacs.d/lib/org/lisp/org-agenda hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-agenda
/home/thblt/.emacs.d/lib/org/lisp/org-clock hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/org-clock
/home/thblt/.emacs.d/lib/org/lisp/ox-latex hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ox-latex
/home/thblt/.emacs.d/lib/org/lisp/ob-sass hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-sass
/home/thblt/.emacs.d/lib/org/lisp/ob-org hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-org
/home/thblt/.emacs.d/lib/org/lisp/ob-R hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-R
/home/thblt/.emacs.d/lib/org/lisp/ob-matlab hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-matlab
/home/thblt/.emacs.d/lib/org/lisp/ox-man hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ox-man
/home/thblt/.emacs.d/lib/org/lisp/ob-lob hides /nix/store/rfgmqyi2klm545isn0r2wd8jqpwgvygn-emacs-27.1/share/emacs/27.0.50/lisp/org/ob-lob

Features:
(shadow sort orgalist mail-extr emacsbug mhtml-mode css-mode smie eww
mm-url smartparens-javascript js cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs flycheck-irony
irony-diagnostics flycheck highlight-indent-guides scpaste nix-mode
nix-repl nix-shell nix-store nix-instantiate nix-shebang nix-format nix
visual-regexp dabbrev two-column iso-transl org-agenda ace-window avy
texmathp preview prv-emacs reporter tex-fold tex-buf font-latex latex
latex-flymake flymake-proc flymake tex-ispell tex-style tex dbus
smartparens-latex tex-mode latexenc reftex-parse misearch multi-isearch
add-log which-func org-indent toc-org org-ref org-ref-ivy-cite
bibtex-completion biblio biblio-download biblio-dissemin biblio-ieee
biblio-hal biblio-dblp biblio-crossref biblio-arxiv timezone biblio-doi
biblio-core url-queue org-ref-core warnings reftex-cite reftex
reftex-loaddefs reftex-vars parsebib org-ref-glossary org-ref-bibtex
org-ref-citeproc doi-utils org-ref-utils org-ref-pdf url-http url-auth
url-gw nsm htmlize f disp-table ol-eww ol-rmail ol-mhe ol-irc ol-info
ol-gnus nnir ol-docview ol-bibtex bibtex ol-bbdb ol-w3m vc-git diff-mode
mwim aggressive-indent color-identifiers-mode smartparens-python python
tramp-sh tramp tramp-loaddefs trampver tramp-integration files-x
tramp-compat ls-lisp company-oddmuse company-keywords company-etags
etags fileloop company-gtags company-dabbrev-code company-dabbrev
company-files company-capf company-cmake company-xcode company-clang
company-semantic company-eclim company-bbdb company-irony
company-template irony-completion irony-snippet irony irony-iotask
outshine outshine-org-cmds outorg pdf-occur tablist tablist-filter
semantic/wisent/comp semantic/wisent semantic/wisent/wisent
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw mode-local cedet pdf-isearch let-alist pdf-misc imenu
pdf-tools cus-edit cus-start cus-load pdf-view bookmark pp pdf-cache
pdf-info tq pdf-util auth-source-pass mu4e-contrib mu4e desktop frameset
mu4e-speedbar speedbar sb-image ezimage dframe mu4e-main mu4e-view
gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum url
url-proxy url-privacy url-expand url-methods url-history mailcap shr
url-cookie url-domsuf url-util svg xml gnus-group gnus-undo gnus-start
gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo parse-time iso8601
gnus-spec gnus-int gnus-range gnus-win gnus nnheader mu4e-headers
mu4e-compose mu4e-context mu4e-draft mu4e-actions ido rfc2368 smtpmail
sendmail mu4e-mark mu4e-message flow-fill mu4e-proc mu4e-utils doc-view
image-mode exif mu4e-lists mu4e-vars message rmc puny rfc822 mml mml-sec
epa derived epg epg-config gnus-util rmail rmail-loaddefs
text-property-search mm-decode mm-bodies mm-encode mail-parse rfc2231
rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils
gmm-utils mailheader hl-line mu4e-meta magit-repos magit-core
magit-autorevert autorevert filenotify magit-margin magit-transient
magit-process with-editor async-bytecomp async magit-mode transient
magit-git magit-section magit-utils crm rainbow-mode evil-nerd-commenter
evil-nerd-commenter-sdk smartparens-html sgml-mode dom company-posframe
company pcase ob-shell shell ob-dot ox-extra ox-odt rng-loc rng-uri
rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns
nxml-enc xmltok nxml-util ox-latex ox-icalendar ox-html table ox-ascii
ox-publish ox org-element avl-tree generator smartparens-org org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src
ob-comint org-pcomplete pcomplete org-list org-faces org-entities
time-date noutline outline org-version ob-emacs-lisp ob-core ob-eval
org-table ol org-keys org-compat org-macs find-func cal-menu calendar
cal-loaddefs tex-site auto-loads visual-fill-column super-save
yasnippet-snippets yasnippet undo-tree diff smartparens-config
smartparens-text smartparens recentf tree-widget wid-edit nav-flash
pulse beginend flyspell-correct-ivy flyspell-correct flyspell ispell
hydra lv winner which-key popwin ivy-posframe easy-mmode posframe
eyebrowse format-spec dash general diminish rx counsel-projectile
counsel xdg xref project dired dired-loaddefs swiper ivy delsel colir
ivy-overlay ffap projectile grep compile comint ansi-color ring ibuf-ext
ibuffer ibuffer-loaddefs thingatpt server powerline powerline-separators
color powerline-themes kurecolor s cl eziam-light-theme eziam-common
advice edmacro kmacro finder-inf package browse-url url-handlers
url-parse auth-source eieio eieio-core cl-macs eieio-loaddefs
password-cache json subr-x map url-vars jka-compr no-littering
auto-compile packed org-loaddefs cl-extra help-mode cl-seq borg info
easymenu cl-loaddefs cl-lib autoload radix-tree lisp-mnt seq byte-opt gv
bytecomp byte-compile cconv tooltip eldoc electric uniquify ediff-hook
vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode elisp-mode lisp-mode prog-mode register page
tab-bar menu-bar rfn-eshadow isearch timer select scroll-bar mouse
jit-lock font-lock syntax facemenu font-core term/tty-colors frame
minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite charscript charprop case-table epa-hook jka-cmpr-hook help
simple abbrev obarray cl-preloaded nadvice loaddefs button faces
cus-face macroexp files text-properties overlay sha1 md5 base64 format
env code-pages mule custom widget hashtable-print-readable backquote
threads dbusbind inotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 789164 59498)
 (symbols 48 58767 1)
 (strings 32 205390 12137)
 (string-bytes 1 6934731)
 (vectors 16 92237)
 (vector-slots 8 1927353 75174)
 (floats 8 771 680)
 (intervals 56 22691 4615)
 (buffers 1000 34))





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#38872: 27.0.50; Keywords can be let-bound
  2020-01-02 17:14 bug#38872: 27.0.50; Keywords can be let-bound Thibault Polge
@ 2020-01-16 19:52 ` Stefan Kangas
  2020-01-16 20:06   ` Andreas Schwab
  0 siblings, 1 reply; 10+ messages in thread
From: Stefan Kangas @ 2020-01-16 19:52 UTC (permalink / raw)
  To: Thibault Polge; +Cc: 38872

[-- Attachment #1: Type: text/plain, Size: 2094 bytes --]

Thibault Polge <thibault@thb.lt> writes:

> This sexp:
>
>    (let ((:k 1)) :k)
>
> evals to 1 in Emacs 25.3.1, 26.3, and HEAD
> (d36adb544d984b91c70f6194da01344e4b2b6fc9) if and only if
> `lexical-binding` is t.
>
> If lexical-binding is nil, it raises an error, as I'd expect it to.
>
> This is in contradiction with documentation at (info "Constant variables
> (elisp)"). The issue also appears if the symbol's been interned with
> (intern ":k")

Thanks, I can reproduce this on current master.

I'm very new to Emacs internals, but decided to dig in.

The problem is that a keyword ":a" has that:

 (a1)   XSYMBOL (tem)->u.s.declared_special == false
 (a2)   XSYMBOL (tem)->u.s.trapped_write == SYMBOL_NOWRITE

However, in eval.c line 972, where "let" is defined, we lexically bind
a symbol under the above conditions:

      if (!NILP (lexenv) && SYMBOLP (var)
	  && !XSYMBOL (var)->u.s.declared_special
	  && NILP (Fmemq (var, Vinternal_interpreter_environment)))
	/* Lexically bind VAR by adding it to the lexenv alist.  */
	lexenv = Fcons (Fcons (var, tem), lexenv);

This is what causes the bug.

In contrast, "nil" and "t" has that:

 (b1)   XSYMBOL (tem)->u.s.declared_special == true

This makes the above check fail, and we defer to the dynamic binding
code which refuses to bind them.

1. One possible fix is to add a check for (b), and refuse to bind it
   if it's true.  The attached patch does that.

2. I'm not sure, but it seems to me that keywords *should* perhaps
   have declared_special == TRUE.  That should be set for anything
   that should never be lexically bound -- right?  If this is correct,
   then I guess we should make sure that it gets set properly,
   probably already in read1?

In plain language, either we (1) change the test in "let" or we (2)
change how keyword symbols gets initialized to pass the existing
test.  Or maybe we should do both..?

Please, if someone could check my findings or point me in the right
direction here, that would be very helpful.  Or even provide a proper
fix if mine is completely wrong.  :-)

Best regards,
Stefan Kangas


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Don-t-let-bind-keywords-when-lexical-binding-is-t.patch --]
[-- Type: text/x-diff, Size: 2248 bytes --]

From 1070ee4579bc907bfdd1b96edc80b4f4d271d57d Mon Sep 17 00:00:00 2001
From: Stefan Kangas <stefankangas@gmail.com>
Date: Thu, 16 Jan 2020 15:33:08 +0100
Subject: [PATCH] Don't let-bind keywords when lexical-binding is t

* src/eval.c (Flet): Signal an error if trying to bind a keyword
symbol when lexical-binding is t.  This is consistent with the manual
section "(elisp)Constant variables".  (Bug#38872)

* test/src/eval-tests.el (eval-tests-let): Add rudimentary tests for
the let-form.
---
 src/eval.c             |  7 +++++--
 test/src/eval-tests.el | 12 ++++++++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/src/eval.c b/src/eval.c
index 4559a0e1f6..9a3f703f40 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -972,8 +972,11 @@ DEFUN ("let", Flet, Slet, 1, UNEVALLED, 0,
       if (!NILP (lexenv) && SYMBOLP (var)
 	  && !XSYMBOL (var)->u.s.declared_special
 	  && NILP (Fmemq (var, Vinternal_interpreter_environment)))
-	/* Lexically bind VAR by adding it to the lexenv alist.  */
-	lexenv = Fcons (Fcons (var, tem), lexenv);
+	if (XSYMBOL (var)->u.s.trapped_write == SYMBOL_NOWRITE)
+	  xsignal1 (Qsetting_constant, var);
+	else
+	  /* Lexically bind VAR by adding it to the lexenv alist.  */
+	  lexenv = Fcons (Fcons (var, tem), lexenv);
       else
 	/* Dynamically bind VAR.  */
 	specbind (var, tem);
diff --git a/test/src/eval-tests.el b/test/src/eval-tests.el
index 074f5be1ef..702bd25040 100644
--- a/test/src/eval-tests.el
+++ b/test/src/eval-tests.el
@@ -28,6 +28,18 @@
 (require 'ert)
 (eval-when-compile (require 'cl-lib))
 
+(ert-deftest eval-tests-let ()
+  "Test let binding using dynamic and lexical scope."
+  (dolist (nil-or-t '(nil t))
+    (with-temp-buffer
+      (setq lexical-binding nil-or-t)
+      (should (equal (let ((x 1)) x) 1))
+      (should-error (let ((1 2)) x) :type '(wrong-type-argument))
+      ;; Behave consistently with (info "(elisp)Constant variables")
+      (should-error (let ((t 1)) t) :type '(setting-constant))
+      (should-error (let ((nil 1)) nil) :type '(setting-constant))
+      (should-error (let ((:a 1)) :a) :type '(setting-constant)))))
+
 (ert-deftest eval-tests--bug24673 ()
   "Check that Bug#24673 has been fixed."
   ;; This should not crash.
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* bug#38872: 27.0.50; Keywords can be let-bound
  2020-01-16 19:52 ` Stefan Kangas
@ 2020-01-16 20:06   ` Andreas Schwab
  2020-01-17  7:47     ` Eli Zaretskii
       [not found]     ` <87wo9r2fi6.fsf@marxist.se>
  0 siblings, 2 replies; 10+ messages in thread
From: Andreas Schwab @ 2020-01-16 20:06 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: Thibault Polge, 38872

On Jan 16 2020, Stefan Kangas wrote:

> diff --git a/src/eval.c b/src/eval.c
> index 4559a0e1f6..9a3f703f40 100644
> --- a/src/eval.c
> +++ b/src/eval.c
> @@ -972,8 +972,11 @@ DEFUN ("let", Flet, Slet, 1, UNEVALLED, 0,
>        if (!NILP (lexenv) && SYMBOLP (var)
>  	  && !XSYMBOL (var)->u.s.declared_special
>  	  && NILP (Fmemq (var, Vinternal_interpreter_environment)))
> -	/* Lexically bind VAR by adding it to the lexenv alist.  */
> -	lexenv = Fcons (Fcons (var, tem), lexenv);
> +	if (XSYMBOL (var)->u.s.trapped_write == SYMBOL_NOWRITE)

I think that should use the same condition as set_internal, so that (let
((:k :k))) still works.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#38872: 27.0.50; Keywords can be let-bound
  2020-01-16 20:06   ` Andreas Schwab
@ 2020-01-17  7:47     ` Eli Zaretskii
       [not found]     ` <87wo9r2fi6.fsf@marxist.se>
  1 sibling, 0 replies; 10+ messages in thread
From: Eli Zaretskii @ 2020-01-17  7:47 UTC (permalink / raw)
  To: Andreas Schwab, Stefan Monnier; +Cc: thibault, stefan, 38872

> From: Andreas Schwab <schwab@linux-m68k.org>
> Date: Thu, 16 Jan 2020 21:06:27 +0100
> Cc: Thibault Polge <thibault@thb.lt>, 38872@debbugs.gnu.org
> 
> On Jan 16 2020, Stefan Kangas wrote:
> 
> > diff --git a/src/eval.c b/src/eval.c
> > index 4559a0e1f6..9a3f703f40 100644
> > --- a/src/eval.c
> > +++ b/src/eval.c
> > @@ -972,8 +972,11 @@ DEFUN ("let", Flet, Slet, 1, UNEVALLED, 0,
> >        if (!NILP (lexenv) && SYMBOLP (var)
> >  	  && !XSYMBOL (var)->u.s.declared_special
> >  	  && NILP (Fmemq (var, Vinternal_interpreter_environment)))
> > -	/* Lexically bind VAR by adding it to the lexenv alist.  */
> > -	lexenv = Fcons (Fcons (var, tem), lexenv);
> > +	if (XSYMBOL (var)->u.s.trapped_write == SYMBOL_NOWRITE)
> 
> I think that should use the same condition as set_internal, so that (let
> ((:k :k))) still works.

Adding Stefan Monnier to the discussion.  Stefan, any comments on this
issue?

Thanks.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#38872: 27.0.50; Keywords can be let-bound
       [not found]     ` <87wo9r2fi6.fsf@marxist.se>
@ 2020-01-17 14:11       ` Stefan Monnier
  2020-09-20 10:36         ` Lars Ingebrigtsen
  0 siblings, 1 reply; 10+ messages in thread
From: Stefan Monnier @ 2020-01-17 14:11 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: Thibault Polge, Andreas Schwab, 38872

>> I think that should use the same condition as set_internal, so that (let
>> ((:k :k))) still works.
> Thanks, I forgot about that case.

We should also look at what the byte-compiler does with this code.

I get the impression that the best/simplest course of action is to set
`declared_special` to `true` for keywords.


        Stefan






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#38872: 27.0.50; Keywords can be let-bound
  2020-01-17 14:11       ` Stefan Monnier
@ 2020-09-20 10:36         ` Lars Ingebrigtsen
  2020-09-20 10:55           ` Eli Zaretskii
  2020-09-20 12:53           ` Stefan Monnier
  0 siblings, 2 replies; 10+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-20 10:36 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Stefan Kangas, Thibault Polge, Andreas Schwab, 38872

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>> I think that should use the same condition as set_internal, so that (let
>>> ((:k :k))) still works.
>> Thanks, I forgot about that case.
>
> We should also look at what the byte-compiler does with this code.
>
> I get the impression that the best/simplest course of action is to set
> `declared_special` to `true` for keywords.

So this would be just:

diff --git a/src/lread.c b/src/lread.c
index 8064bf4d0e..f465b451a9 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -4104,6 +4104,7 @@ intern_sym (Lisp_Object sym, Lisp_Object obarray, Lisp_Object index)
     {
       make_symbol_constant (sym);
       XSYMBOL (sym)->u.s.redirect = SYMBOL_PLAINVAL;
+      XSYMBOL (sym)->u.s.declared_special = true;
       SET_SYMBOL_VAL (XSYMBOL (sym), sym);
     }
 
Which seems to work?  "make check" still works after doing this, and the
test case now fails like it should do.  Some more context below.

But I have to admit I don't understand why this fixes the test case.  :-/

intern_sym (Lisp_Object sym, Lisp_Object obarray, Lisp_Object index)
{
  Lisp_Object *ptr;

  XSYMBOL (sym)->u.s.interned = (EQ (obarray, initial_obarray)
				 ? SYMBOL_INTERNED_IN_INITIAL_OBARRAY
				 : SYMBOL_INTERNED);

  if (SREF (SYMBOL_NAME (sym), 0) == ':' && EQ (obarray, initial_obarray))
    {
      make_symbol_constant (sym);
      XSYMBOL (sym)->u.s.redirect = SYMBOL_PLAINVAL;
      XSYMBOL (sym)->u.s.declared_special = true;
      SET_SYMBOL_VAL (XSYMBOL (sym), sym);
    }



-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply related	[flat|nested] 10+ messages in thread

* bug#38872: 27.0.50; Keywords can be let-bound
  2020-09-20 10:36         ` Lars Ingebrigtsen
@ 2020-09-20 10:55           ` Eli Zaretskii
  2020-09-20 10:57             ` Lars Ingebrigtsen
  2020-09-20 12:53           ` Stefan Monnier
  1 sibling, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2020-09-20 10:55 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: stefan, thibault, schwab, monnier, 38872

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Sun, 20 Sep 2020 12:36:12 +0200
> Cc: Stefan Kangas <stefan@marxist.se>, Thibault Polge <thibault@thb.lt>,
>  Andreas Schwab <schwab@linux-m68k.org>, 38872@debbugs.gnu.org
> 
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
> 
> > I get the impression that the best/simplest course of action is to set
> > `declared_special` to `true` for keywords.
> 
> So this would be just:
> 
> diff --git a/src/lread.c b/src/lread.c
> index 8064bf4d0e..f465b451a9 100644
> --- a/src/lread.c
> +++ b/src/lread.c
> @@ -4104,6 +4104,7 @@ intern_sym (Lisp_Object sym, Lisp_Object obarray, Lisp_Object index)
>      {
>        make_symbol_constant (sym);
>        XSYMBOL (sym)->u.s.redirect = SYMBOL_PLAINVAL;
> +      XSYMBOL (sym)->u.s.declared_special = true;
>        SET_SYMBOL_VAL (XSYMBOL (sym), sym);
>      }
>  
> Which seems to work?  "make check" still works after doing this, and the
> test case now fails like it should do.  Some more context below.

I see you've installed this change, but the log message doesn''t
mention it, nor its reason.  can we have some explanation in the
comments in the code, please?





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#38872: 27.0.50; Keywords can be let-bound
  2020-09-20 10:55           ` Eli Zaretskii
@ 2020-09-20 10:57             ` Lars Ingebrigtsen
  0 siblings, 0 replies; 10+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-20 10:57 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: stefan, thibault, schwab, monnier, 38872

Eli Zaretskii <eliz@gnu.org> writes:

> I see you've installed this change, but the log message doesn''t
> mention it, nor its reason.  can we have some explanation in the
> comments in the code, please?

Did I?  I didn't mean to -- I must have forgotten to remove it before
checking in something else.  I'll back it out again.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#38872: 27.0.50; Keywords can be let-bound
  2020-09-20 10:36         ` Lars Ingebrigtsen
  2020-09-20 10:55           ` Eli Zaretskii
@ 2020-09-20 12:53           ` Stefan Monnier
  2020-09-20 19:31             ` Lars Ingebrigtsen
  1 sibling, 1 reply; 10+ messages in thread
From: Stefan Monnier @ 2020-09-20 12:53 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Andreas Schwab, Thibault Polge, Stefan Kangas, 38872

> But I have to admit I don't understand why this fixes the test case.  :-/

It's the magic of Emacs,


        Stefan






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#38872: 27.0.50; Keywords can be let-bound
  2020-09-20 12:53           ` Stefan Monnier
@ 2020-09-20 19:31             ` Lars Ingebrigtsen
  0 siblings, 0 replies; 10+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-20 19:31 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Stefan Kangas, Thibault Polge, Andreas Schwab, 38872

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> But I have to admit I don't understand why this fixes the test case.  :-/
>
> It's the magic of Emacs,
>
>         Stefan

OK; applied to Emacs 28.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-09-20 19:31 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-01-02 17:14 bug#38872: 27.0.50; Keywords can be let-bound Thibault Polge
2020-01-16 19:52 ` Stefan Kangas
2020-01-16 20:06   ` Andreas Schwab
2020-01-17  7:47     ` Eli Zaretskii
     [not found]     ` <87wo9r2fi6.fsf@marxist.se>
2020-01-17 14:11       ` Stefan Monnier
2020-09-20 10:36         ` Lars Ingebrigtsen
2020-09-20 10:55           ` Eli Zaretskii
2020-09-20 10:57             ` Lars Ingebrigtsen
2020-09-20 12:53           ` Stefan Monnier
2020-09-20 19:31             ` Lars Ingebrigtsen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).