On Friday, 1 October 2021 at 14:26:39 UTC, jfondren wrote:
On Friday, 1 October 2021 at 14:03:06 UTC, Stephen wrote:
This code should work should mutual recursion be supported.

It still wouldn't work, because structs are value types and it's impossible to say how large either struct is:

Error: struct `mutualrec.Ar` no size because of forward reference

With s/struct/class/ it still wouldn't work because this is a mixin problem rather than a problem of template mutual recursion:

```d
mixin(q{ class Ar { Br b; } });
mixin(q{ class Br { Ar b; } });
```

mutualrec2.d-mixin-1(1): Error: undefined identifier `Br`, did you mean class `Ar`?

This seems like a surprising limitation of mixin, though, which isn't highlighted by the spec.

All right I'll try to design without mutual recursion but mixins don't seem to work if they're put out of order.
(i.e. this works:
```d
struct Ar { Br b; ubyte a; }
struct Br { ubyte b; }
```
but not this:
```d
mixin(q{struct Ar { Br b; ubyte a; }});
mixin(q{struct Br { ubyte b; }});
```
).
Is this by design?

Reply via email to