Subject: bug#77123: closed (Re: 29.1; call-next-method)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 22 Mar 2025 21:51:02 +0000

Your bug report

#77123: 29.1; call-next-method

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].

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

Subject: Re: 29.1; call-next-method
From: Stefan Monnier <[email-masked]>
To: [email-masked]
Cc: Eric Ludlam <[email-masked]>, [email-masked]
Date: Sat, 22 Mar 2025 17:50:37 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

> It worked 30.1
> You can close it

Thanks, closing,

        Stefan

Subject: 29.1; call-next-method
From: Christopher Stacy <[email-masked]>
To: [email-masked]
Cc: Eric Ludlam <[email-masked]>, Stefan Monnier <[email-masked]>
Date: Wed, 19 Mar 2025 14:20:38 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

In GNU Emacs 29.1 (build 1, x86_64-apple-darwin20.6.0, Carbon Version
164 AppKit 2022.7) of 2023-08-08 built on Mac-1691499221282.local

eieio-version:  1.4

cl-call-next-method is not calling all the methods I expected.
It does call the methods in the direct superclasses, but it seems to be 
skipping all the indirect ones.

For a subclass FOO of A, B, a call-next-method from an instance of FOO 
will correctly call the  A and B methods. But if for example superclass 
A has mixins X and Y, neither the X or Y methods will be called. These 
are just primary methods. None of the inherited superclass methods are 
being run by call-next-method.

Attached is an example test program,
including test results. There are two
versions: one for Emacs Lisp,
and one is for Common Lisp (CLOS).
CL does it correctly (of course),
but EL gets the wrong answer.

I tested with two different CLOS implementations,
just to make sure I'm not crazy.

The files are identical except for
the compatibility preamble and results,
so you can compare them easily.
TEST#1 illustrates the case where things work right.
The differing answer is just in TEST#2.

Thanks for looking into this!