mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 04:19:13 +00:00
Fix for-loop expressions breaking with BlockExpr iterable
This commit is contained in:
parent
b9fa37f5b4
commit
c93983e76f
4 changed files with 44 additions and 5 deletions
|
@ -81,10 +81,17 @@ fn generate_nodes(kinds: KindsSrc<'_>, grammar: &AstSrc) -> String {
|
|||
.map(|node| {
|
||||
let name = format_ident!("{}", node.name);
|
||||
let kind = format_ident!("{}", to_upper_snake_case(&node.name));
|
||||
let traits = node.traits.iter().map(|trait_name| {
|
||||
let trait_name = format_ident!("{}", trait_name);
|
||||
quote!(impl ast::#trait_name for #name {})
|
||||
});
|
||||
let traits = node
|
||||
.traits
|
||||
.iter()
|
||||
.filter(|trait_name| {
|
||||
// For loops have two expressions so this might collide, therefor manual impl it
|
||||
node.name != "ForExpr" || trait_name.as_str() != "HasLoopBody"
|
||||
})
|
||||
.map(|trait_name| {
|
||||
let trait_name = format_ident!("{}", trait_name);
|
||||
quote!(impl ast::#trait_name for #name {})
|
||||
});
|
||||
|
||||
let methods = node.fields.iter().map(|field| {
|
||||
let method_name = field.method_name();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue