This builds on top of the preceding PR, so the diffs will look bigger than they really are.
The real change here is the last one, which unifies the representation of all modifiers on declarations in the AST, so that they can be parsed uniformly.
I plan to work on a follow-up change that takes advantage of this uniformity to streamline the parser further. If this PR doesn't get merged by then, I'll probably close it and make a larger unified PR.
This builds on top of the preceding PR, so the diffs will look bigger than they really are.
The real change here is the last one, which unifies the representation of all modifiers on declarations in the AST, so that they can be parsed uniformly.
I plan to work on a follow-up change that takes advantage of this uniformity to streamline the parser further. If this PR doesn't get merged by then, I'll probably close it and make a larger unified PR.