On Monday, 7 May 2018 at 09:23:04 UTC, Brian Schott wrote:
I spent several hours trying to get this working with a
non-trivial AST, and I think that it just isn't going to work
until the compiler front-end gets better about handling
recursive definitions. It fails in more-or-less the same way
that my attempts at using std.variant did, and this is not the
fault of your library.
It's too bad, because the visitor pattern is not very good when
you want to support visitors that should not accidentally
modify the tree (i.e. arguments to `visit` are `const`), and
other visitors whose job is to re-write the tree.
Thanks for taking a look!
There are definitely compiler issues that keep this (and
Algebraic) from being as useful as they could be (e.g., issue
1807 [1]), though so far, I've managed to find workarounds for
the ones I ran into. I'd be curious to see the code that was
giving you trouble, if you still have it.
[1]: https://issues.dlang.org/show_bug.cgi?id=1807