[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#58563: 29.0.50; Generic functions and advertised-calling-convention
From: |
Stefan Monnier |
Subject: |
bug#58563: 29.0.50; Generic functions and advertised-calling-convention |
Date: |
Sun, 16 Oct 2022 12:05:33 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) |
> Further to https://bugs.gnu.org/58531#25, generic functions do not
> currently support advertised-calling-convention very well (or vice
> versa).
>
> For example, starting with:
>
> (cl-defgeneric my-foo (x &optional _y)
> "Frobnicate X."
> (declare (advertised-calling-convention (x) "29.1"))
> x)
>
> Any code that calls my-foo with two arguments correctly gives rise to a
> warning during byte-compilation.
> More importantly, if we now do:
>
> (cl-defmethod my-foo ((x symbol) &optional _y)
> "Frobnicate X the symbol."
> (declare (advertised-calling-convention (x) "29.1"))
> x)
>
> Then my-foo's symbol-function is overwritten and its entry in
> advertised-signature-table is no longer found, so byte-compilation no
> longer warns about incorrect usage, and C-h f regresses to displaying:
I believe this is now fixed in `master`.
> C-h f also shows the expected arglist, but not for methods:
>
> my-foo is a Lisp closure.
> (my-foo X)
> Frobnicate X.
> This is a generic function.
> Implementations:
> (my-foo X &optional _Y)
> Undocumented
Not this, OTOH.
> I wonder if cl-defgeneric should be the single source of this function
> property, or whether any cl-defmethod should be able to overload it.
> Thoughts?
The `declare` form on `cl-defmethod`s has been silently ignored until
now. So I added a compilation warning when we find such a `declare`.
Stefan
- bug#58563: 29.0.50; Generic functions and advertised-calling-convention, Basil L. Contovounesios, 2022/10/16
- bug#58563: 29.0.50; Generic functions and advertised-calling-convention, Lars Ingebrigtsen, 2022/10/16
- bug#58563: 29.0.50; Generic functions and advertised-calling-convention, Stefan Monnier, 2022/10/16
- bug#58563: 29.0.50; Generic functions and advertised-calling-convention, Lars Ingebrigtsen, 2022/10/16
- bug#58563: 29.0.50; Generic functions and advertised-calling-convention, Lars Ingebrigtsen, 2022/10/16
- bug#58563: 29.0.50; Generic functions and advertised-calling-convention, Stefan Monnier, 2022/10/16
- bug#58563: 29.0.50; Generic functions and advertised-calling-convention, Lars Ingebrigtsen, 2022/10/16
- bug#58563: 29.0.50; Generic functions and advertised-calling-convention, Stefan Monnier, 2022/10/16
bug#58563: 29.0.50; Generic functions and advertised-calling-convention, Basil L. Contovounesios, 2022/10/16
bug#58563: 29.0.50; Generic functions and advertised-calling-convention,
Stefan Monnier <=