Iterate over items by default in Punctuated
diff --git a/codegen/src/main.rs b/codegen/src/main.rs
index 5ebe8e5..25f98a8 100644
--- a/codegen/src/main.rs
+++ b/codegen/src/main.rs
@@ -50,7 +50,7 @@
a.segments
.iter()
.zip(b.segments.iter())
- .all(|(a, b)| a.item().ident.as_ref() == b.item().ident.as_ref())
+ .all(|(a, b)| a.ident.as_ref() == b.ident.as_ref())
}
fn get_features(attrs: &[Attribute], mut features: Tokens) -> Tokens {
@@ -505,7 +505,7 @@
})
}
- fn delimited_visit(
+ fn punctuated_visit(
elem: &Type,
lookup: &Lookup,
kind: Kind,
@@ -519,7 +519,7 @@
Some(match kind {
Visit => {
format!(
- "for el in {name} {{ \
+ "for el in Punctuated::elements({name}) {{ \
let it = el.item(); \
{val} \
}}",
@@ -529,7 +529,7 @@
}
VisitMut => {
format!(
- "for mut el in {name} {{ \
+ "for mut el in Punctuated::elements_mut({name}) {{ \
let it = el.item_mut(); \
{val} \
}}",
@@ -586,7 +586,7 @@
let name = name.tokens();
let i = Index::from(i);
let it = Owned(quote!((#name).#i));
- let val = visit(elem.item(), lookup, kind, &it)
+ let val = visit(elem, lookup, kind, &it)
.unwrap_or_else(|| noop_visit(kind, &it));
code.push_str(&format!(" {}", val));
match kind {
@@ -643,7 +643,7 @@
vec_visit(elem, lookup, kind, name)
}
RelevantType::Punctuated(elem) => {
- delimited_visit(elem, lookup, kind, name)
+ punctuated_visit(elem, lookup, kind, name)
}
RelevantType::Option(elem) => {
option_visit(elem, lookup, kind, name)
@@ -732,10 +732,10 @@
state.visit_mut_impl.push_str(" match *_i {\n");
state.fold_impl.push_str(" match _i {\n");
for variant in &e.variants {
- let fields: Vec<(&Field, Tokens)> = match variant.item().fields {
+ let fields: Vec<(&Field, Tokens)> = match variant.fields {
Fields::Named(..) => panic!("Doesn't support enum struct variants"),
Fields::Unnamed(ref fields) => {
- let binding = format!(" {}::{}(", s.ast.ident, variant.item().ident);
+ let binding = format!(" {}::{}(", s.ast.ident, variant.ident);
state.visit_impl.push_str(&binding);
state.visit_mut_impl.push_str(&binding);
state.fold_impl.push_str(&binding);
@@ -759,7 +759,7 @@
let mut tokens = quote!();
Ident::from(name).to_tokens(&mut tokens);
- (*el.item(), tokens)
+ (el, tokens)
})
.collect();
@@ -772,14 +772,14 @@
Fields::Unit => {
state
.visit_impl
- .push_str(&format!(" {0}::{1} => {{ }}\n", s.ast.ident, variant.item().ident));
+ .push_str(&format!(" {0}::{1} => {{ }}\n", s.ast.ident, variant.ident));
state
.visit_mut_impl
- .push_str(&format!(" {0}::{1} => {{ }}\n", s.ast.ident, variant.item().ident));
+ .push_str(&format!(" {0}::{1} => {{ }}\n", s.ast.ident, variant.ident));
state.fold_impl.push_str(&format!(
" {0}::{1} => {{ {0}::{1} }}\n",
s.ast.ident,
- variant.item().ident
+ variant.ident
));
continue;
}
@@ -792,7 +792,7 @@
}
state
.fold_impl
- .push_str(&format!(" {}::{} (\n", s.ast.ident, variant.item().ident,));
+ .push_str(&format!(" {}::{} (\n", s.ast.ident, variant.ident,));
for (field, binding) in fields {
state.visit_impl.push_str(&format!(
" {};\n",
@@ -846,8 +846,8 @@
fields.named
.iter()
.map(|el| {
- let id = el.item().ident;
- (*el.item(), quote!(_i.#id))
+ let id = el.ident;
+ (el, quote!(_i.#id))
})
.collect()
}
@@ -860,7 +860,7 @@
.enumerate()
.map(|(idx, el)| {
let id = Index::from(idx);
- (*el.item(), quote!(_i.#id))
+ (el, quote!(_i.#id))
})
.collect()
}
@@ -1041,6 +1041,7 @@
#![cfg_attr(feature = \"cargo-clippy\", allow(match_same_arms))]
use *;
+use punctuated::Punctuated;
use proc_macro2::Span;
use gen::helper::visit::*;
@@ -1082,6 +1083,7 @@
#![cfg_attr(feature = \"cargo-clippy\", allow(match_same_arms))]
use *;
+use punctuated::Punctuated;
use proc_macro2::Span;
use gen::helper::visit_mut::*;