Subject: bug#63103: 30.0.50; nconc compiler optimization breaks user packages

From: Daniel Mendler <[email-masked]>
Date: Thu, 27 Apr 2023 16:02:22 +0200

On 4/27/23 15:54, Drew Adams wrote:
>> Well, my assumption didn't completely stand on its own. Given that the
>> last argument can be a non-list suggests that the last argument is not
>> inspected or mutated, but just overwrites the cdr of the second to last
>> argument. This then implies that the second to last argument could also
>> be an improper list. Given that CL and Elisp have behaved like this for
>> a long time, it seems better to preserve this property. I think it is
>> kind of nice that `nconc' can be used as a tool to turn a proper list
>> into an improper list and vice versa. It may be good to document this in
>> the `nconc' docstring and the Elisp manual.
> 
> +1.
> 
> You both agree that this behavior (1) shouldn't be
> lost and (2) should be documented.  That's exactly
> the position taken by Common Lisp.
> 
> Please document this behavior as part of the bug
> fix, if you haven't already.

Mattias already documented the behavior for dotted lists in the Elisp
manual and added a regression test. See commit
5ead8c5f69b0a69bac4641d5003ee422d6b67038.

Daniel