November 25, 2014
https://issues.dlang.org/show_bug.cgi?id=13776

          Issue ID: 13776
           Summary: Incorrect "recursive alias declaration" error with
                    `__traits(compiles, ...)`
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Keywords: rejects-valid
          Severity: regression
          Priority: P1
         Component: DMD
          Assignee: nobody@puremagic.com
          Reporter: verylonglogin.reg@gmail.com

This code used to compile:
---
enum t1(T) = __traits(compiles, { T; });

enum t2(A...) = 1;

template t3()
{
    struct S;
    alias t3 = t2!(t1!S);
}

void main()
{
    alias t = t3!();
}
---
main.d(8): Error: alias main.t3!().t3 recursive alias declaration
main.d(8): Error: template instance t2!(t1!(S)) recursive template expansion
main.d(8): Error: alias main.t3!().t3 recursive alias declaration
main.d(8): Error: alias main.t3!().t3 recursive alias declaration
main.d(8): Error: template instance main.t1!(S) error instantiating
main.d(13):        instantiated from here: t3!()
---

--