Subject: bug#78782: closed (Re: bug#78782: 31.0.50 ; remove eieio's *-list-p)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 28 Jun 2025 09:18:03 +0000

Your bug report

#78782: 31.0.50 ; remove eieio's *-list-p

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
78782: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=78782
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#78782: 31.0.50 ; remove eieio's *-list-p
From: Pip Cet <[email-masked]>
To: Eli Zaretskii <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Sat, 28 Jun 2025 09:17:37 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

"Eli Zaretskii" <[email-masked]> writes:

>> Date: Fri, 13 Jun 2025 13:27:04 +0000
>> From:  Pip Cet via "Bug reports for GNU Emacs,
>>  the Swiss army knife of text editors" <[email-masked]>
>>
>> This code in eieio-core.el:
>>
>>           (lambda (obj)
>>             (:documentation
>>              (format
>>               "Test OBJ to see if it a list of objects which are a child of type %s"
>>               cname))
>>             (when (listp obj)
>>               (let ((ans t)) ;; nil is valid
>>                 ;; Loop over all the elements of the input list, test
>>                 ;; each to make sure it is a child of the desired object class.
>>                 (while (and obj ans)
>>                   (setq ans (and (eieio-object-p (car obj))
>>                                  (object-of-class-p (car obj) 'cname)))
>>                   (setq obj (cdr obj)))
>>                 ans))))
>>
>> creates *-list-p, which then tests whether a list of objects are all
>> descendants of class 'cname, a literal symbol.  This works only if the
>> class we're defining is called "cname", and no one noticed, so it's time
>> to remove this obsolete function (obsoleted in 25.1).
>>
>> The code has been in place since:
>>
>> commit 2c47eaa18a4a3f7eb53ed826d8c5d018ac843586
>> AuthorDate: Tue May 18 17:13:37 2021 -0400
>>
>> This would probably also make (defclass proper nil 'x) work, instead of
>> redefining proper-list-p to be a different function.
>>
>> OK to do this on master?
>
> Fine by me, thanks.

Done in:

    af68c6e8255: Remove eieio's ...-list-p predicate (bug#78782)

I'd kept the bug open in case there would be any problems, but there
weren't.  Closing now.

Pip

Subject: 31.0.50 ; remove eieio's *-list-p
From: Pip Cet <[email-masked]>
To: [email-masked], Stefan Monnier <[email-masked]>
Date: Fri, 13 Jun 2025 13:27:04 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

This code in eieio-core.el:

          (lambda (obj)
            (:documentation
             (format
              "Test OBJ to see if it a list of objects which are a child of type %s"
              cname))
            (when (listp obj)
              (let ((ans t)) ;; nil is valid
                ;; Loop over all the elements of the input list, test
                ;; each to make sure it is a child of the desired object class.
                (while (and obj ans)
                  (setq ans (and (eieio-object-p (car obj))
                                 (object-of-class-p (car obj) 'cname)))
                  (setq obj (cdr obj)))
                ans))))

creates *-list-p, which then tests whether a list of objects are all
descendants of class 'cname, a literal symbol.  This works only if the
class we're defining is called "cname", and no one noticed, so it's time
to remove this obsolete function (obsoleted in 25.1).

The code has been in place since:

commit 2c47eaa18a4a3f7eb53ed826d8c5d018ac843586
AuthorDate: Tue May 18 17:13:37 2021 -0400

This would probably also make (defclass proper nil 'x) work, instead of
redefining proper-list-p to be a different function.

OK to do this on master?