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

Rainer Schuetze <r.sagita...@gmx.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |r.sagita...@gmx.de

--- Comment #4 from Rainer Schuetze <r.sagita...@gmx.de> ---
I tried to untangle the name of the 1.s.s.s.s.s case. Replacing testexpansion
with E, I get

E.s!(E.s!(E.s!(E.s!(E.s!(int).s(int).Result)
                .s (E.s!(int).s(int).Result)
                .Result)
           .s (E.s!(E.s!(int).s(int).Result)
                .s (E.s!(int).s(int).Result)
                .Result)
           .Result)
      .s (E.s!(E.s!(E.s!(int).s(int).Result)
                .s (E.s!(int).s(int).Result)
                .Result)
           .s (E.s!(E.s!(int).s(int).Result)
                .s (E.s!(int).s(int).Result)
                .Result)
           .Result)
      .Result)
 .s (E.s!(E.s!(E.s!(E.s!(int).s(int).Result)
                .s (E.s!(int).s(int).Result)
                .Result)
           .s (E.s!(E.s!(int).s(int).Result)
                .s (E.s!(int).s(int).Result)
                .Result)
           .Result)
      .s (E.s!(E.s!(E.s!(int).s(int).Result)
                .s (E.s!(int).s(int).Result)
                .Result)
           .s (E.s!(E.s!(int).s(int).Result)
                .s (E.s!(int).s(int).Result)
                .Result)
           .Result)
      .Result)
 .Result.foo()

Each step has a mangling of "E.s!(T).s(T).Result" with T being the template
argument.

The length explosion comes from the type being listed twice. This is not caused
by the Voldemort return type, but the eponymous template that is created by the
function template.

--

Reply via email to