AST improvements to support conversion to rustc AST#3838
Closed
luca-barbieri wants to merge 7 commits intorust-lang:masterfrom
Closed
AST improvements to support conversion to rustc AST#3838luca-barbieri wants to merge 7 commits intorust-lang:masterfrom
luca-barbieri wants to merge 7 commits intorust-lang:masterfrom
Conversation
Member
|
The last four commits are committed by |
- Adds a new AstElement trait that is implemented by all generated node, token and enum structs - Overhauls the code generators to code-generate all tokens, and also enhances enums to support including tokens, node, and nested enums
We used to parse it as T: Fn() -> (u8 + Send), which is different from the rustc behavior of T: (Fn() -> u8) + Send
This allows to mark subnodes with #[sep], which will result in
"splitting" the node using them, allowing to match other fields only
if found in the proper separation.
For instance, this will work:
Addition {
lhs: Expr,
#[sep] Plus,
rhs: Expr
}
This requires the #[sep] support, since the MacroCall node can either be a Pat or an Expr.
Contributor
|
I'll try to merge most of these during the next few days! I'd rather do this myself manually, as this'll conflict with everything! |
Contributor
|
I've merged most of the things here into master. Most notable things not merged:
Thanks for putting this together @luca-barbieri ! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a set of improvements that I done while creating a rustc branch that can use rust-analyzer to parse code and convert the rust-analyzer AST to rustc's internal AST format, found at rust-lang/rust#70745
The goal is to extend the helper classes implementing AstNode and similar classes so that the AST can be examined solely using them.