Subject: bug#66615: 30.0.50; Inconsistent 'number-or-marker' type definition in the cl- machinery

From: Andrea Corallo <[email-masked]>
Date: Thu, 19 Oct 2023 17:24:23 -0400

Stefan Monnier <[email-masked]> writes:

>>>> - There is a `number-or-marker-p` primitive and `cl-typep` doesn't know
>>>>   how to use it for `(or number marker)`.
>>> Well we could just remove 'number-or-marker-p' 😃
>
> Indeed, or we could teach `cl-typep` how to make use of it.
>
>>> I see your point, actually my main drive is to make the situation more
>>> coherent so I'm unblocked in the first place, just the method
>>> specializer functionality is a blocker for removing 'number-or-marker'.
>
> That's what I had understood, and indeed there were some loose ends there.
>
>> Okay with a567faf4c2b I added 'number-or-marker' where it was missing.
>
> Thanks.  I also added corresponding `integer-or-marker`.

Hi Stefan thanks,

I've to question now the following entry introduced in
`cl--typeof-types' for correctness:

(integer number integer-or-marker number-or-marker atom)

The doc says :
Each element has the form (TYPE . SUPERTYPES) where TYPE is one of
the symbols returned by ‘type-of’, and SUPERTYPES is the list of its
supertypes from the most specific to least specific.

And indeed not every 'number' is an 'integer-or-marker'.

I suspect that's the reason why this commit introduces few failures in
the native-comp testsuite.

At this point of the night I'm not sure if and how 'integer-or-marker'
can be added correctly to this representation.

Best Regards

  Andrea