Subject: Re: [PATCH] Etags support for Mercury -- fix explicit tags for existentially-quantified procedures

From: Eli Zaretskii <[email-masked]>
Date: Mon, 14 Jun 2021 20:42:37 +0300

> Cc: [email-masked], [email-masked]
> From: fabrice nicol <[email-masked]>
> Date: Mon, 14 Jun 2021 19:10:53 +0200
> 
> If you take a look at other languages that implement explicit tags (like 
> Fortran) you will see that there are buffers coming in to avoid having 
> 'name' and 'linestart' (1st and 4th arguments to 'make_tag') share a 
> same string pointer (here 's').
> 
> This is explained in the header comment to 'make_tag':
> 
> " 2. LINESTART contains name as either a rightmost, or rightmost but
>   *     one character, substring;"

This is just a condition for generating "implicitly named" tags.
There's nothing wrong with having explicitly named tags, if there are
good reasons for that.

> When I applied you suggestion and tested, the TAGS base was as expected 
> accordingly: wrong.

"Wrong" in what sense?  Can you show an example of such a wrong tag?
And how does Mercury differ from Prolog in this sense? prolog_pr
doesn't allocate new strings before calling make_tag.

Thanks.