[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#31350: 27.0; `pcase' message: "Redundant pcase pattern"
From: |
Michael Heerdegen |
Subject: |
bug#31350: 27.0; `pcase' message: "Redundant pcase pattern" |
Date: |
Sun, 04 Oct 2020 03:37:38 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
Drew Adams <drew.adams@oracle.com> writes:
> I'll repeat the request, which is what I think a user
> would like to know:
>
> Can the messaging at least tell you:
> (1) all of a set of clauses that are mutually redundant and
> (2) which one of them will actually be used by the compiled
> code, the others presumably having been pruned?
>
> IOW, what's the actual effect, for users? How does pcase
> deal with the redundancy? Can that at least be documented
> somewhere (maybe it is already)?
I think you make an error in reasoning: we don't have mutual redundancy
here. A case can be redundant when it will never match because whenever
would match, a previous case in the cases list always matches, so it is
effectively shadowed. But this is not symmetric (cases are always tried
from first to last (!), and e.g. a `_' catchall pattern in one case will
make all following cases redundant, but not the other way round).
I think the message is more like a warning that a case can never match,
and in all cases where this happened to me, as also in your case, the
reason was a very obvious editing mistake. I don't think there is much
to say here, Emacs just tells you: this case here will never be used,
look what you have done wrong. There is a problem with your code
whenever you see that message. And there is nothing to say about the
semantics as well.
BTW, I think the implementation only covers the most obvious and
simplistic cases, like those involving catchall patterns or duplicated
patterns.
Michael.