Consistently use "receiver" for method self type

This commit is contained in:
David Tolnay 2020-04-20 00:23:55 -07:00
parent 891061bc7f
commit e439c772aa
No known key found for this signature in database
GPG Key ID: F9BA143B95FF6D82
2 changed files with 25 additions and 22 deletions

View File

@ -370,8 +370,8 @@ fn write_cxx_function_shim(out: &mut OutFile, efn: &ExternFn, types: &Types) {
}
let mangled = mangle::extern_fn(&out.namespace, efn);
write!(out, "{}(", mangled);
if let Some(base) = &efn.receiver {
write!(out, "{} *self$", base.ident);
if let Some(receiver) = &efn.receiver {
write!(out, "{} *self$", receiver.ident);
}
for (i, arg) in efn.args.iter().enumerate() {
if i > 0 || efn.receiver.is_some() {
@ -395,7 +395,7 @@ fn write_cxx_function_shim(out: &mut OutFile, efn: &ExternFn, types: &Types) {
write_return_type(out, &efn.ret);
match &efn.receiver {
None => write!(out, "(*{}$)(", efn.ident),
Some(base) => write!(out, "({}::*{}$)(", base.ident, efn.ident),
Some(receiver) => write!(out, "({}::*{}$)(", receiver.ident, efn.ident),
}
for (i, arg) in efn.args.iter().enumerate() {
if i > 0 {
@ -412,7 +412,7 @@ fn write_cxx_function_shim(out: &mut OutFile, efn: &ExternFn, types: &Types) {
write!(out, " = ");
match &efn.receiver {
None => write!(out, "{}", efn.ident),
Some(base) => write!(out, "&{}::{}", base.ident, efn.ident),
Some(receiver) => write!(out, "&{}::{}", receiver.ident, efn.ident),
}
writeln!(out, ";");
write!(out, " ");
@ -534,8 +534,8 @@ fn write_rust_function_decl_impl(
}
write!(out, "{}(", link_name);
let mut needs_comma = false;
if let Some(base) = &sig.receiver {
write!(out, "{} &self$", base.ident);
if let Some(receiver) = &sig.receiver {
write!(out, "{} &self$", receiver.ident);
needs_comma = true;
}
for arg in &sig.args {
@ -580,8 +580,8 @@ fn write_rust_function_shim_decl(
indirect_call: bool,
) {
write_return_type(out, &sig.ret);
if let Some(base) = receiver {
write!(out, "{}::", base.ident);
if let Some(receiver) = receiver {
write!(out, "{}::", receiver.ident);
}
write!(out, "{}(", local_name);
for (i, arg) in sig.args.iter().enumerate() {

View File

@ -126,9 +126,9 @@ fn expand_cxx_type(ety: &ExternType) -> TokenStream {
fn expand_cxx_function_decl(namespace: &Namespace, efn: &ExternFn, types: &Types) -> TokenStream {
let ident = &efn.ident;
let receiver = efn.receiver.iter().map(|base| {
let ident = &base.ident;
match base.mutability {
let receiver = efn.receiver.iter().map(|receiver| {
let ident = &receiver.ident;
match receiver.mutability {
None => quote!(_: &#ident),
Some(_) => quote!(_: &mut #ident),
}
@ -169,10 +169,13 @@ fn expand_cxx_function_shim(namespace: &Namespace, efn: &ExternFn, types: &Types
let ident = &efn.ident;
let doc = &efn.doc;
let decl = expand_cxx_function_decl(namespace, efn, types);
let receiver = efn.receiver.iter().map(|base| match base.mutability {
None => quote!(&self),
Some(_) => quote!(&mut self),
});
let receiver = efn
.receiver
.iter()
.map(|receiver| match receiver.mutability {
None => quote!(&self),
Some(_) => quote!(&mut self),
});
let args = efn.args.iter().map(|arg| quote!(#arg));
let all_args = receiver.chain(args);
let ret = if efn.throws {
@ -292,8 +295,8 @@ fn expand_cxx_function_shim(namespace: &Namespace, efn: &ExternFn, types: &Types
})
}
.unwrap_or(call);
let receiver_ident = efn.receiver.as_ref().map(|base| &base.ident);
match receiver_ident {
let receiver_type = efn.receiver.as_ref().map(|receiver| &receiver.ident);
match receiver_type {
None => quote! {
#doc
pub fn #ident(#(#all_args,)*) #ret {
@ -307,9 +310,9 @@ fn expand_cxx_function_shim(namespace: &Namespace, efn: &ExternFn, types: &Types
}
}
},
Some(base_ident) => quote! {
Some(receiver_type) => quote! {
#doc
impl #base_ident {
impl #receiver_type {
pub fn #ident(#(#all_args,)*) #ret {
extern "C" {
#decl
@ -391,9 +394,9 @@ fn expand_rust_function_shim_impl(
catch_unwind_label: String,
invoke: Option<&Ident>,
) -> TokenStream {
let receiver = sig.receiver.iter().map(|base| {
let ident = &base.ident;
match base.mutability {
let receiver = sig.receiver.iter().map(|receiver| {
let ident = &receiver.ident;
match receiver.mutability {
None => quote!(__self: &#ident),
Some(_) => quote!(__self: &mut #ident),
}