What's up?
As discussed with @aljazerzen & @m-span (though not necessarily agreed yet, feedback welcome), prqlc-ast isn't quite pulling its weight as a "cross-compiler external interface".
I'm very keen to continue to make the compiler more modular by stage. But this crate doesn't do that — instead it adds context to understanding a particular stage.
So I think it makes sense to:
- At least move into
prqlc-parser the items which only have prqlc-parser as a dependent. For example span.rs (or token.rs, which I recently combined with similar code)
- (technically
prqlc also depends on Span — but only because it's used in prqlc-parser, I'm counting that as "only have prqlc-parser as a dependent", hope that's not too confusing...)
- Possibly do more — e.g. we have some code in
generic.rs which lots of crates depend on — we could consider also dissolving that. But we can wait to see what's left
Keen not to just continually refactor the library (meme below), but in this case I do think it would make it simpler and is worthwhile.

What's up?
As discussed with @aljazerzen & @m-span (though not necessarily agreed yet, feedback welcome),
prqlc-astisn't quite pulling its weight as a "cross-compiler external interface".I'm very keen to continue to make the compiler more modular by stage. But this crate doesn't do that — instead it adds context to understanding a particular stage.
So I think it makes sense to:
prqlc-parserthe items which only haveprqlc-parseras a dependent. For examplespan.rs(ortoken.rs, which I recently combined with similar code)prqlcalso depends onSpan— but only because it's used inprqlc-parser, I'm counting that as "only haveprqlc-parseras a dependent", hope that's not too confusing...)generic.rswhich lots of crates depend on — we could consider also dissolving that. But we can wait to see what's leftKeen not to just continually refactor the library (meme below), but in this case I do think it would make it simpler and is worthwhile.