libiberty: Add support for `in' and `in ref' storage classes.
authorIain Buclaw <ibuclaw@gdcproject.org>
Tue, 4 Aug 2020 16:11:51 +0000 (18:11 +0200)
committerIain Buclaw <ibuclaw@gdcproject.org>
Wed, 26 Aug 2020 08:03:56 +0000 (10:03 +0200)
commit387d0773f39a56b2a831a2b7e7ed189d6ffc2f36
tree76be22c67db978cec95182958ee7bbbb67841a54
parentf0a0a84cd9a75052114066a15beebeee8c2cf8ab
libiberty: Add support for `in' and `in ref' storage classes.

The storage class `in' is now a first-class citizen with its own mangle
symbol, of which also permits `in ref'.  Previously, `in' was an alias
to `const [scope]', which is a type constructor.

The mangle symbol repurposed for this is `I', which was originally used
by identifier types.  However, while TypeIdentifier is part of the
grammar, it must be resolved to some other entity during the semantic
passes, and so shouldn't appear anywhere in the mangled name.

Old tests that are now no longer valid have been removed.

libiberty/ChangeLog:

* d-demangle.c (dlang_function_args): Handle 'in' and 'in ref'
parameter storage classes.
(dlang_type): Remove identifier type.
* testsuite/d-demangle-expected: Update tests.
libiberty/d-demangle.c
libiberty/testsuite/d-demangle-expected