On Tuesday, 18 June 2024 at 09:10:28 UTC, realhet wrote:
I tried to narrow the problem, but I wasn't able, but I guess
I've found another solution: There is a part in my framework
which works with LDC2 1.28, but that's 'illegal' with later
versions.
Oh yeah. That is many versions ago! Released in 2021.
That's why I'm stuck in the past, but now it adds more
motivation to catch up with the latest version.
Another motivation -- even if you found this was a bug and it is
still in the latest compiler, the fix will go into the *latest
compiler*, not the one that works with your code!
That part declares an enum, whose members have UDA's pointing
to the enum's members.
With 2 step parsing it is valid, but later compiler versions
don't like this.
It's a quite big state machine graph, I have to refactor this
to eliminate this self-referencing to catch up with the latest
compiler.
Hm... a possibility is to change the UDAs to strings, and then
post-process the strings into the actual members using
`__traits(getMember, State, name)`
So e.g.:
```d
enum State {
@"state2" state1,
@"state1" state2
}
```
-Steve