Make ToTokens more lenient when generating tokens for invalid ASTs
diff --git a/src/data.rs b/src/data.rs
index 937de27..4821a7a 100644
--- a/src/data.rs
+++ b/src/data.rs
@@ -212,8 +212,10 @@
tokens.append_all(&self.attrs);
self.ident.to_tokens(tokens);
self.data.to_tokens(tokens);
- self.eq_token.to_tokens(tokens);
- self.discriminant.to_tokens(tokens);
+ if let Some(ref disc) = self.discriminant {
+ self.eq_token.unwrap_or_default().to_tokens(tokens);
+ disc.to_tokens(tokens);
+ }
}
}
@@ -239,8 +241,10 @@
fn to_tokens(&self, tokens: &mut Tokens) {
tokens.append_all(&self.attrs);
self.vis.to_tokens(tokens);
- self.ident.to_tokens(tokens);
- self.colon_token.to_tokens(tokens);
+ if let Some(ref ident) = self.ident {
+ ident.to_tokens(tokens);
+ self.colon_token.unwrap_or_default().to_tokens(tokens);
+ }
self.ty.to_tokens(tokens);
}
}
@@ -264,6 +268,8 @@
fn to_tokens(&self, tokens: &mut Tokens) {
self.pub_token.to_tokens(tokens);
self.paren_token.surround(tokens, |tokens| {
+ // XXX: If we have a path which is not "self" or "super",
+ // automatically add the "in" token.
self.in_token.to_tokens(tokens);
self.path.to_tokens(tokens);
});