Prevent forgetting fields in PartialEq and Hash impls
diff --git a/syntax/impls.rs b/syntax/impls.rs
index dfaab55..6baa122 100644
--- a/syntax/impls.rs
+++ b/syntax/impls.rs
@@ -45,14 +45,32 @@
 
 impl PartialEq for Ty1 {
     fn eq(&self, other: &Ty1) -> bool {
-        self.name == other.name && self.inner == other.inner
+        let Ty1 {
+            name,
+            langle: _,
+            inner,
+            rangle: _,
+        } = self;
+        let Ty1 {
+            name: name2,
+            langle: _,
+            inner: inner2,
+            rangle: _,
+        } = other;
+        name == name2 && inner == inner2
     }
 }
 
 impl Hash for Ty1 {
     fn hash<H: Hasher>(&self, state: &mut H) {
-        self.name.hash(state);
-        self.inner.hash(state);
+        let Ty1 {
+            name,
+            langle: _,
+            inner,
+            rangle: _,
+        } = self;
+        name.hash(state);
+        inner.hash(state);
     }
 }
 
@@ -60,12 +78,28 @@
 
 impl PartialEq for Ref {
     fn eq(&self, other: &Ref) -> bool {
-        self.inner == other.inner
+        let Ref {
+            ampersand: _,
+            mutability,
+            inner,
+        } = self;
+        let Ref {
+            ampersand: _,
+            mutability: mutability2,
+            inner: inner2,
+        } = other;
+        mutability.is_some() == mutability2.is_some() && inner == inner2
     }
 }
 
 impl Hash for Ref {
     fn hash<H: Hasher>(&self, state: &mut H) {
-        self.inner.hash(state);
+        let Ref {
+            ampersand: _,
+            mutability,
+            inner,
+        } = self;
+        mutability.is_some().hash(state);
+        inner.hash(state);
     }
 }