From 86710616bb628fa0b3d71921a1daeeb76f71a45e Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Mon, 20 Apr 2020 00:30:32 -0700 Subject: [PATCH] Fix const in methods with shared reference receivers --- gen/write.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gen/write.rs b/gen/write.rs index 05c646aa..631be52e 100644 --- a/gen/write.rs +++ b/gen/write.rs @@ -371,6 +371,9 @@ 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(receiver) = &efn.receiver { + if receiver.mutability.is_none() { + write!(out, "const "); + } write!(out, "{} *self$", receiver.ident); } for (i, arg) in efn.args.iter().enumerate() { @@ -535,6 +538,9 @@ fn write_rust_function_decl_impl( write!(out, "{}(", link_name); let mut needs_comma = false; if let Some(receiver) = &sig.receiver { + if receiver.mutability.is_none() { + write!(out, "const "); + } write!(out, "{} &self$", receiver.ident); needs_comma = true; } @@ -598,6 +604,11 @@ fn write_rust_function_shim_decl( write!(out, "void *extern$"); } write!(out, ")"); + if let Some(receiver) = &sig.receiver { + if receiver.mutability.is_none() { + write!(out, " const"); + } + } if !sig.throws { write!(out, " noexcept"); }