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

Rainer Schuetze <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]

--- Comment #4 from Rainer Schuetze <[email protected]> ---
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