[Issue 17379] Mangle voldemort types as if they are defined in the outer scope to avoid exponential symbol name length with templates

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sun May 7 11:04:15 PDT 2017


https://issues.dlang.org/show_bug.cgi?id=17379

--- Comment #4 from Rainer Schuetze <r.sagitario at gmx.de> ---
> I am not sure what you mean by prepend the function name. The suggestion 
> does not prepend the function name. Could you elaborate?

I meant that the demangler has to prepend the function name (including
arguments to disambiguate overloads) to the identifier to print out the full
name (if the demangled name is supposed not to show the transformation). 

> This is not meant as a special case rule. ... It is also not ambiguous since the transformation is equivalent to explicitly writing out the template.

Consider similar structs defined elsewhere, e.g. in nested or chained
functions:

template foo(T)
{
   static struct Result
   {
      int x;
   }

   auto fun(T t)
   {
      static struct Result
      {
         T t;
      }
      return Result(t);
   }

   auto foo(T t)
   {
      return fun(t);
   }
}

What is the mangling of the return type of foo?

--


More information about the Digitalmars-d-bugs mailing list