Compile Error: List contains a loop: (lower-right lower-left upper-left upper-right
condy0919 opened this issue · comments
Issue type
- Bug report
Environment
Emacs version: GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.42, cairo version 1.18.0) of 2024-05-23
Operating System: ArchLinux
Evil version: Evil version 1.15.0
Evil installation type: MELPA
Graphical/Terminal: GUI on X
Tested in a make emacs
session (see CONTRIBUTING.md): No
Reproduction steps
- Start Emacs
- Install evil from melpa
Expected behavior
No errors during byte-comp.
Actual behavior
byte-compiler complains
List contains a loop: (lower-right lower-left upper-left upper-right lower-right lower-left upper-left upper-right lower-right lower-left . #6)
Further notes
(evil-define-command evil-visual-rotate (corner &optional beg end type)
"Move point to CORNER of the Visual selection.
Corner may be one of `upper-left', `upper-right', `lower-left' and
`lower-right':
upper-left +---+ upper-right
| |
lower-left +---+ lower-right
When called interactively, the selection is rotated clockwise."
:keep-visual t
(interactive
(let ((corners '#1=(upper-left upper-right lower-right lower-left . #1#)))
(list (cadr (memq (evil-visual-block-corner) corners)))))
(let* ((beg (or beg (point)))
(end (or end (mark t) beg))
(type (or type evil-this-type))
range)
(cond
((memq type '(rectangle block))
(setq range (evil-block-rotate beg end :corner corner)
beg (pop range)
end (pop range))
(unless (eq corner (evil-visual-block-corner corner beg end))
(evil-swap beg end))
(goto-char beg)
(when (evil-visual-state-p)
(evil-move-mark end)
(evil-visual-refresh nil nil nil :corner corner)))
((memq corner '(upper-right lower-right))
(goto-char (max beg end))
(when (evil-visual-state-p)
(evil-move-mark (min beg end))))
(t
(goto-char (min beg end))
(when (evil-visual-state-p)
(evil-move-mark (max beg end)))))))
The variable corners
uses an recursive ref #1
in it's definition.
Huh, since when is that not allowed? I get no warnings on GNU Emacs 29.3.
Huh, since when is that not allowed? I get no warnings on GNU Emacs 29.3.
Emacs 30 complains.
I am unable to reproduce with GNU Emacs 30.0.91 on NixOS, using default compilation options.