February 10, 2016
https://issues.dlang.org/show_bug.cgi?id=15667

          Issue ID: 15667
           Summary: dmd infinite loop on invalid syntax.
           Product: D
           Version: D2
          Hardware: x86
                OS: Mac OS X
            Status: NEW
          Severity: major
          Priority: P1
         Component: dmd
          Assignee: nobody@puremagic.com
          Reporter: john.loughran.colvin@gmail.com

% cat traits.d
template staticIndexOf(T)
{
    enum staticIndexOf = genericIndexOf!T;
}

template genericIndexOf(args...)
{
    alias e     = args;
    alias tuple = args;
    alias tail = tuple;
    enum next  = genericIndexOf!(e, tail);
}

alias X = ;

static if (staticIndexOf!X)

% cat generator.d
unittest
{
    import traits;
}
% dmd -unittest generator.d
traits.d(16): Error: basic type expected, not ;
traits.d(20): Error: declaration expected following attribute, not EOF

and then it just hangs forever, endlessly allocating memory.

--