emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: "The starting list count" ?????


From: Alan Mackenzie
Subject: Re: "The starting list count" ?????
Date: Mon, 3 Jan 2022 21:33:01 +0000

Hello again, Stefan.

On Mon, Jan 03, 2022 at 16:15:32 -0500, Stefan Monnier wrote:
> > Debugger entered--Lisp error: (quit)
> >   copy-tree((1 . #1) t)
> >   macroexp-strip-symbol-positions((1 . #1))
> >   byte-compile-constant((1 . #1))
> >   byte-compile-quote('(1 . #2))
> >   byte-compile-form('(1 . #2))

> >> The #1 means "the second heap object between the root and here" and in
> >> (1 . #1) there's only one heap object.

> > I can cope with "the second heap object", but what is "the root"?

> I suspect in the above backtrace, every arglist is passed to print as
> is, so the "root" is the arglist.

> >>     (1 . #1)

> > Yes.  Looking at seq-tests.el, it's clear the original source for it is

> >     (let ((l1 '#1=(1 . #1#))) ....)

> Ah, one of those rare cases where the source code includes circular data.

Yes.  But the current byte-compiler copes with it.  The version I have
in scratch/correct-warning-pos doesn't, because of that copy-tree call
(and possibly the further processing in macroexp-strip-symbol-positions,
too).

> Maybe we should apply the patch below.

Hmm.  That feels like papering over the problem rather than solving it.

>         Stefan


> diff --git a/test/lisp/emacs-lisp/seq-tests.el 
> b/test/lisp/emacs-lisp/seq-tests.el
> index 9e5d59163f9..48ed72a1b06 100644
> --- a/test/lisp/emacs-lisp/seq-tests.el
> +++ b/test/lisp/emacs-lisp/seq-tests.el
> @@ -474,7 +474,8 @@ test-sequences-oddp
>    (should-error (seq-random-elt "")))
 
>  (ert-deftest test-seq-mapn-circular-lists ()
> -  (let ((l1 '#1=(1 . #1#)))
> +  (let ((l1 (list 1)))
> +    (setcdr l1 l1)
>      (should (equal (seq-mapn #'+ '(3 4 5 7) l1)
>                     '(4 5 6 8)))))
 
-- 
Alan Mackenzie (Nuremberg, Germany).



reply via email to

[Prev in Thread] Current Thread [Next in Thread]