Clean up printing of Receiver to tokens
diff --git a/syntax/impls.rs b/syntax/impls.rs
index d3c4b0f..3509899 100644
--- a/syntax/impls.rs
+++ b/syntax/impls.rs
@@ -184,8 +184,13 @@
impl PartialEq for Receiver {
fn eq(&self, other: &Receiver) -> bool {
- let Receiver { mutability, ident } = self;
let Receiver {
+ ampersand: _,
+ mutability,
+ ident,
+ } = self;
+ let Receiver {
+ ampersand: _,
mutability: mutability2,
ident: ident2,
} = other;
@@ -195,7 +200,11 @@
impl Hash for Receiver {
fn hash<H: Hasher>(&self, state: &mut H) {
- let Receiver { mutability, ident } = self;
+ let Receiver {
+ ampersand: _,
+ mutability,
+ ident,
+ } = self;
mutability.is_some().hash(state);
ident.hash(state);
}
diff --git a/syntax/mod.rs b/syntax/mod.rs
index 49bb299..b160e5a 100644
--- a/syntax/mod.rs
+++ b/syntax/mod.rs
@@ -75,6 +75,7 @@
}
pub struct Receiver {
+ pub ampersand: Token![&],
pub mutability: Option<Token![mut]>,
pub ident: Ident,
}
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 6e5b36e..7bd36de 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -180,6 +180,7 @@
if let Type::Ref(reference) = ty {
if let Type::Ident(ident) = reference.inner {
receiver = Some(Receiver {
+ ampersand: reference.ampersand,
mutability: reference.mutability,
ident,
});
diff --git a/syntax/tokens.rs b/syntax/tokens.rs
index df11852..784de37 100644
--- a/syntax/tokens.rs
+++ b/syntax/tokens.rs
@@ -1,5 +1,5 @@
use crate::syntax::atom::Atom::*;
-use crate::syntax::{Derive, ExternFn, Ref, Signature, Slice, Ty1, Type, Var};
+use crate::syntax::{Derive, ExternFn, Receiver, Ref, Signature, Slice, Ty1, Type, Var};
use proc_macro2::{Ident, Span, TokenStream};
use quote::{quote_spanned, ToTokens};
use syn::Token;
@@ -97,3 +97,11 @@
}
}
}
+
+impl ToTokens for Receiver {
+ fn to_tokens(&self, tokens: &mut TokenStream) {
+ self.ampersand.to_tokens(tokens);
+ self.mutability.to_tokens(tokens);
+ self.ident.to_tokens(tokens);
+ }
+}