Preserve span of self var in Receiver
diff --git a/syntax/impls.rs b/syntax/impls.rs
index 3509899..7b2d746 100644
--- a/syntax/impls.rs
+++ b/syntax/impls.rs
@@ -187,14 +187,16 @@
let Receiver {
ampersand: _,
mutability,
- ident,
+ var: _,
+ ty,
} = self;
let Receiver {
ampersand: _,
mutability: mutability2,
- ident: ident2,
+ var: _,
+ ty: ty2,
} = other;
- mutability.is_some() == mutability2.is_some() && ident == ident2
+ mutability.is_some() == mutability2.is_some() && ty == ty2
}
}
@@ -203,9 +205,10 @@
let Receiver {
ampersand: _,
mutability,
- ident,
+ var: _,
+ ty,
} = self;
mutability.is_some().hash(state);
- ident.hash(state);
+ ty.hash(state);
}
}
diff --git a/syntax/mangle.rs b/syntax/mangle.rs
index 6f4e0d8..1380704 100644
--- a/syntax/mangle.rs
+++ b/syntax/mangle.rs
@@ -13,7 +13,7 @@
pub fn extern_fn(namespace: &Namespace, efn: &ExternFn) -> Symbol {
match &efn.receiver {
- Some(receiver) => join!(namespace, CXXBRIDGE, receiver.ident, efn.ident),
+ Some(receiver) => join!(namespace, CXXBRIDGE, receiver.ty, efn.ident),
None => join!(namespace, CXXBRIDGE, efn.ident),
}
}
diff --git a/syntax/mod.rs b/syntax/mod.rs
index b160e5a..3a2bb93 100644
--- a/syntax/mod.rs
+++ b/syntax/mod.rs
@@ -77,7 +77,8 @@
pub struct Receiver {
pub ampersand: Token![&],
pub mutability: Option<Token![mut]>,
- pub ident: Ident,
+ pub var: Token![self],
+ pub ty: Ident,
}
pub enum Type {
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 7bd36de..d8bc0e5 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -182,7 +182,8 @@
receiver = Some(Receiver {
ampersand: reference.ampersand,
mutability: reference.mutability,
- ident,
+ var: Token),
+ ty: ident,
});
continue;
}
diff --git a/syntax/tokens.rs b/syntax/tokens.rs
index 784de37..6e3db9b 100644
--- a/syntax/tokens.rs
+++ b/syntax/tokens.rs
@@ -102,6 +102,6 @@
fn to_tokens(&self, tokens: &mut TokenStream) {
self.ampersand.to_tokens(tokens);
self.mutability.to_tokens(tokens);
- self.ident.to_tokens(tokens);
+ self.ty.to_tokens(tokens);
}
}