More useful literal api
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index 7a94df8..c9f349e 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -255,6 +255,22 @@
fn fold_lifetime_def(&mut self, i: LifetimeDef) -> LifetimeDef { fold_lifetime_def(self, i) }
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
fn fold_lit(&mut self, i: Lit) -> Lit { fold_lit(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn fold_lit_bool(&mut self, i: LitBool) -> LitBool { fold_lit_bool(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn fold_lit_byte(&mut self, i: LitByte) -> LitByte { fold_lit_byte(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn fold_lit_byte_str(&mut self, i: LitByteStr) -> LitByteStr { fold_lit_byte_str(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn fold_lit_char(&mut self, i: LitChar) -> LitChar { fold_lit_char(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn fold_lit_float(&mut self, i: LitFloat) -> LitFloat { fold_lit_float(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn fold_lit_int(&mut self, i: LitInt) -> LitInt { fold_lit_int(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn fold_lit_str(&mut self, i: LitStr) -> LitStr { fold_lit_str(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn fold_lit_verbatim(&mut self, i: LitVerbatim) -> LitVerbatim { fold_lit_verbatim(self, i) }
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
fn fold_local(&mut self, i: Local) -> Local { fold_local(self, i) }
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
@@ -406,15 +422,29 @@
}
-pub fn fold_ident<V: Folder + ?Sized>(_visitor: &mut V, mut _i: Ident) -> Ident {
- _i.span = _visitor.fold_span(_i.span);
- _i
+macro_rules! fold_span_only {
+ ($f:ident : $t:ident) => {
+ pub fn $f<V: Folder + ?Sized>(_visitor: &mut V, mut _i: $t) -> $t {
+ _i.span = _visitor.fold_span(_i.span);
+ _i
+ }
+ }
}
-pub fn fold_lifetime<V: Folder + ?Sized>(_visitor: &mut V, mut _i: Lifetime) -> Lifetime {
- _i.span = _visitor.fold_span(_i.span);
- _i
-}
+fold_span_only!(fold_ident: Ident);
+fold_span_only!(fold_lifetime: Lifetime);
+#[cfg(any(feature = "full", feature = "derive"))]
+fold_span_only!(fold_lit_byte: LitByte);
+#[cfg(any(feature = "full", feature = "derive"))]
+fold_span_only!(fold_lit_byte_str: LitByteStr);
+#[cfg(any(feature = "full", feature = "derive"))]
+fold_span_only!(fold_lit_char: LitChar);
+#[cfg(any(feature = "full", feature = "derive"))]
+fold_span_only!(fold_lit_float: LitFloat);
+#[cfg(any(feature = "full", feature = "derive"))]
+fold_span_only!(fold_lit_int: LitInt);
+#[cfg(any(feature = "full", feature = "derive"))]
+fold_span_only!(fold_lit_str: LitStr);
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
pub fn fold_abi<V: Folder + ?Sized>(_visitor: &mut V, _i: Abi) -> Abi {
@@ -1959,11 +1989,63 @@
}
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
pub fn fold_lit<V: Folder + ?Sized>(_visitor: &mut V, _i: Lit) -> Lit {
- Lit {
+ match _i {
+ Lit::Str(_binding_0, ) => {
+ Lit::Str (
+ _visitor.fold_lit_str(_binding_0),
+ )
+ }
+ Lit::ByteStr(_binding_0, ) => {
+ Lit::ByteStr (
+ _visitor.fold_lit_byte_str(_binding_0),
+ )
+ }
+ Lit::Byte(_binding_0, ) => {
+ Lit::Byte (
+ _visitor.fold_lit_byte(_binding_0),
+ )
+ }
+ Lit::Char(_binding_0, ) => {
+ Lit::Char (
+ _visitor.fold_lit_char(_binding_0),
+ )
+ }
+ Lit::Int(_binding_0, ) => {
+ Lit::Int (
+ _visitor.fold_lit_int(_binding_0),
+ )
+ }
+ Lit::Float(_binding_0, ) => {
+ Lit::Float (
+ _visitor.fold_lit_float(_binding_0),
+ )
+ }
+ Lit::Bool(_binding_0, ) => {
+ Lit::Bool (
+ _visitor.fold_lit_bool(_binding_0),
+ )
+ }
+ Lit::Verbatim(_binding_0, ) => {
+ Lit::Verbatim (
+ _visitor.fold_lit_verbatim(_binding_0),
+ )
+ }
+ }
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn fold_lit_bool<V: Folder + ?Sized>(_visitor: &mut V, _i: LitBool) -> LitBool {
+ LitBool {
value: _i . value,
span: _visitor.fold_span(_i . span),
}
}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn fold_lit_verbatim<V: Folder + ?Sized>(_visitor: &mut V, _i: LitVerbatim) -> LitVerbatim {
+ LitVerbatim {
+ token: _i . token,
+ span: _visitor.fold_span(_i . span),
+ }
+}
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
pub fn fold_local<V: Folder + ?Sized>(_visitor: &mut V, _i: Local) -> Local {
Local {
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index b9338a5..aaf9377 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -252,6 +252,22 @@
fn visit_lifetime_def(&mut self, i: &'ast LifetimeDef) { visit_lifetime_def(self, i) }
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
fn visit_lit(&mut self, i: &'ast Lit) { visit_lit(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_bool(&mut self, i: &'ast LitBool) { visit_lit_bool(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_byte(&mut self, i: &'ast LitByte) { visit_lit_byte(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_byte_str(&mut self, i: &'ast LitByteStr) { visit_lit_byte_str(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_char(&mut self, i: &'ast LitChar) { visit_lit_char(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_float(&mut self, i: &'ast LitFloat) { visit_lit_float(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_int(&mut self, i: &'ast LitInt) { visit_lit_int(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_str(&mut self, i: &'ast LitStr) { visit_lit_str(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_verbatim(&mut self, i: &'ast LitVerbatim) { visit_lit_verbatim(self, i) }
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
fn visit_local(&mut self, i: &'ast Local) { visit_local(self, i) }
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
@@ -1542,9 +1558,73 @@
}
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
pub fn visit_lit<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Lit) {
+ match *_i {
+ Lit::Str(ref _binding_0, ) => {
+ _visitor.visit_lit_str(_binding_0);
+ }
+ Lit::ByteStr(ref _binding_0, ) => {
+ _visitor.visit_lit_byte_str(_binding_0);
+ }
+ Lit::Byte(ref _binding_0, ) => {
+ _visitor.visit_lit_byte(_binding_0);
+ }
+ Lit::Char(ref _binding_0, ) => {
+ _visitor.visit_lit_char(_binding_0);
+ }
+ Lit::Int(ref _binding_0, ) => {
+ _visitor.visit_lit_int(_binding_0);
+ }
+ Lit::Float(ref _binding_0, ) => {
+ _visitor.visit_lit_float(_binding_0);
+ }
+ Lit::Bool(ref _binding_0, ) => {
+ _visitor.visit_lit_bool(_binding_0);
+ }
+ Lit::Verbatim(ref _binding_0, ) => {
+ _visitor.visit_lit_verbatim(_binding_0);
+ }
+ }
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_bool<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitBool) {
// Skipped field _i . value;
_visitor.visit_span(& _i . span);
}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_byte<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitByte) {
+ // Skipped field _i . token;
+ _visitor.visit_span(& _i . span);
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_byte_str<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitByteStr) {
+ // Skipped field _i . token;
+ _visitor.visit_span(& _i . span);
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_char<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitChar) {
+ // Skipped field _i . token;
+ _visitor.visit_span(& _i . span);
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_float<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitFloat) {
+ // Skipped field _i . token;
+ _visitor.visit_span(& _i . span);
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_int<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitInt) {
+ // Skipped field _i . token;
+ _visitor.visit_span(& _i . span);
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_str<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitStr) {
+ // Skipped field _i . token;
+ _visitor.visit_span(& _i . span);
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_verbatim<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast LitVerbatim) {
+ // Skipped field _i . token;
+ _visitor.visit_span(& _i . span);
+}
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
pub fn visit_local<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast Local) {
for it in & _i . attrs { _visitor.visit_attribute(it) };
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index 77556bd..a15936d 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -252,6 +252,22 @@
fn visit_lifetime_def_mut(&mut self, i: &mut LifetimeDef) { visit_lifetime_def_mut(self, i) }
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
fn visit_lit_mut(&mut self, i: &mut Lit) { visit_lit_mut(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_bool_mut(&mut self, i: &mut LitBool) { visit_lit_bool_mut(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_byte_mut(&mut self, i: &mut LitByte) { visit_lit_byte_mut(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_byte_str_mut(&mut self, i: &mut LitByteStr) { visit_lit_byte_str_mut(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_char_mut(&mut self, i: &mut LitChar) { visit_lit_char_mut(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_float_mut(&mut self, i: &mut LitFloat) { visit_lit_float_mut(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_int_mut(&mut self, i: &mut LitInt) { visit_lit_int_mut(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_str_mut(&mut self, i: &mut LitStr) { visit_lit_str_mut(self, i) }
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+fn visit_lit_verbatim_mut(&mut self, i: &mut LitVerbatim) { visit_lit_verbatim_mut(self, i) }
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
fn visit_local_mut(&mut self, i: &mut Local) { visit_local_mut(self, i) }
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
@@ -1542,9 +1558,73 @@
}
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
pub fn visit_lit_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut Lit) {
+ match *_i {
+ Lit::Str(ref mut _binding_0, ) => {
+ _visitor.visit_lit_str_mut(_binding_0);
+ }
+ Lit::ByteStr(ref mut _binding_0, ) => {
+ _visitor.visit_lit_byte_str_mut(_binding_0);
+ }
+ Lit::Byte(ref mut _binding_0, ) => {
+ _visitor.visit_lit_byte_mut(_binding_0);
+ }
+ Lit::Char(ref mut _binding_0, ) => {
+ _visitor.visit_lit_char_mut(_binding_0);
+ }
+ Lit::Int(ref mut _binding_0, ) => {
+ _visitor.visit_lit_int_mut(_binding_0);
+ }
+ Lit::Float(ref mut _binding_0, ) => {
+ _visitor.visit_lit_float_mut(_binding_0);
+ }
+ Lit::Bool(ref mut _binding_0, ) => {
+ _visitor.visit_lit_bool_mut(_binding_0);
+ }
+ Lit::Verbatim(ref mut _binding_0, ) => {
+ _visitor.visit_lit_verbatim_mut(_binding_0);
+ }
+ }
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_bool_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut LitBool) {
// Skipped field _i . value;
_visitor.visit_span_mut(& mut _i . span);
}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_byte_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut LitByte) {
+ // Skipped field _i . token;
+ _visitor.visit_span_mut(& mut _i . span);
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_byte_str_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut LitByteStr) {
+ // Skipped field _i . token;
+ _visitor.visit_span_mut(& mut _i . span);
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_char_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut LitChar) {
+ // Skipped field _i . token;
+ _visitor.visit_span_mut(& mut _i . span);
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_float_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut LitFloat) {
+ // Skipped field _i . token;
+ _visitor.visit_span_mut(& mut _i . span);
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_int_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut LitInt) {
+ // Skipped field _i . token;
+ _visitor.visit_span_mut(& mut _i . span);
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_str_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut LitStr) {
+ // Skipped field _i . token;
+ _visitor.visit_span_mut(& mut _i . span);
+}
+# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ]
+pub fn visit_lit_verbatim_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut LitVerbatim) {
+ // Skipped field _i . token;
+ _visitor.visit_span_mut(& mut _i . span);
+}
# [ cfg ( any ( feature = "full" , feature = "derive" ) ) ] # [ cfg ( feature = "full" ) ]
pub fn visit_local_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut Local) {
for it in & mut _i . attrs { _visitor.visit_attribute_mut(it) };