[Issue 19585] New: Invalid recursive template expansion error

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Jan 15 08:12:37 UTC 2019


          Issue ID: 19585
           Summary: Invalid recursive template expansion error
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: major
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: ben.schaaf at gmail.com

Versions: 2.081.1, 2.083.0 (What I had installed)

The following code produces a compiler error when it shouldn't:

struct A {
    M2 stdin;

mixin template Handle(T, T invalid_value = T.init) {}

struct M1 { mixin Handle!(size_t); }
struct M2 { mixin Handle!(M1); }

template `foo.Handle(T, T invalid_value = T.init)` recursive template expansion

Not using the struct doesn't produce an error, so clearly expanding M2 works
perfectly. Using M1.init instead of relying on the default parameter doesn't
produce this issue.


More information about the Digitalmars-d-bugs mailing list