[Issue 15831] IFTI voldemort type exploding bloat

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Fri May 20 06:04:22 PDT 2016


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

Rainer Schuetze <r.sagitario at gmx.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |r.sagitario at gmx.de

--- Comment #4 from Rainer Schuetze <r.sagitario at 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.

--


More information about the Digitalmars-d-bugs mailing list