mirror of
https://github.com/topjohnwu/cxx.git
synced 2025-02-20 08:03:28 +00:00
Consistently use "receiver" for method self type
This commit is contained in:
parent
891061bc7f
commit
e439c772aa
16
gen/write.rs
16
gen/write.rs
@ -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() {
|
||||
|
@ -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),
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user