Add non-wrapping mode to ada_decode

When ada_decode encounters a name that it cannot decode, it simply
wraps it in <...>, which is used elsewhere in the Ada code to indicate
that a verbatim match should be done.

A subequent patch needed the ability to suppress this wrapping, so
this patch adds a new mode to ada_decode.

2021-06-25  Tom Tromey  <tromey@adacore.com>

	* ada-lang.c (ada_decode): Add wrap parameter.
	* ada-lang.h (ada_decode): Add wrap parameter.
This commit is contained in:
Tom Tromey
2021-06-25 08:01:15 -06:00
parent 134df96436
commit 8a3df5acae
3 changed files with 16 additions and 6 deletions

View File

@@ -976,12 +976,10 @@ ada_remove_po_subprogram_suffix (const char *encoded, int *len)
*len = *len - 1;
}
/* If ENCODED follows the GNAT entity encoding conventions, then return
the decoded form of ENCODED. Otherwise, return "<%s>" where "%s" is
replaced by ENCODED. */
/* See ada-lang.h. */
std::string
ada_decode (const char *encoded)
ada_decode (const char *encoded, bool wrap)
{
int i, j;
int len0;
@@ -1216,12 +1214,14 @@ ada_decode (const char *encoded)
return decoded;
Suppress:
if (!wrap)
return {};
if (encoded[0] == '<')
decoded = encoded;
else
decoded = '<' + std::string(encoded) + '>';
return decoded;
}
/* Table for keeping permanent unique copies of decoded names. Once