Subject: bug#47408: Etags support for Mercury [v0.5]

From: Francesco Potortì <[email-masked]>
Date: Thu, 10 Jun 2021 19:05:37 +0200

>:- some [T] pred unravel_univ(univ::in, T::out) is det.
>
>Your fix incorrectly outputs such quantified predicates. For example on 
>tagging univ.m (attached), your commit version yields:
>
>:- some [T] pred unravel_univ(^?[T] pred unravel_univ^A141,4333
>
>whilst my original code yields the correct tag:
>
>:- some [T] pred unravel_univ(^?141,4333

The first tag is a named tag, as described in etc/ETAGS.EBNF.  Why do
you say it is incorrect?  Does etags.el behave badly with that tag?

While the automatically generated explicit tag name should do no harm,
if you generate a moreappropriate tag name that should improve
functionality.  In this case, I suspect that the tag name should be in
fact "unravel_univ" rather than "pred unravel_univ".

In short:

1) the first tag is  anamed tag, and should behave essentially like the
   second, probably providing more resilience against code changes, so
   it shuld be the preferred way to generate a tag

2) this can be further improved with knowledge of the tagged langage:
   rather than relying on etags to autometically generate a name, the
   code should ideally provide the correct name