Tweak operator symbol mangling
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 2fd0f70..ab9d3c0 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -383,7 +383,7 @@
out.begin_block(Block::ExternC);
if derive::contains(&strct.derives, Trait::PartialEq) {
- let link_name = mangle::operator(&strct.name, "__operator_eq");
+ let link_name = mangle::operator(&strct.name, "eq");
writeln!(
out,
"bool {}(const {1} &, const {1} &) noexcept;",
@@ -391,7 +391,7 @@
);
if !derive::contains(&strct.derives, Trait::Eq) {
- let link_name = mangle::operator(&strct.name, "__operator_ne");
+ let link_name = mangle::operator(&strct.name, "ne");
writeln!(
out,
"bool {}(const {1} &, const {1} &) noexcept;",
@@ -401,14 +401,14 @@
}
if derive::contains(&strct.derives, Trait::PartialOrd) {
- let link_name = mangle::operator(&strct.name, "__operator_lt");
+ let link_name = mangle::operator(&strct.name, "lt");
writeln!(
out,
"bool {}(const {1} &, const {1} &) noexcept;",
link_name, strct.name.cxx,
);
- let link_name = mangle::operator(&strct.name, "__operator_le");
+ let link_name = mangle::operator(&strct.name, "le");
writeln!(
out,
"bool {}(const {1} &, const {1} &) noexcept;",
@@ -416,14 +416,14 @@
);
if !derive::contains(&strct.derives, Trait::Ord) {
- let link_name = mangle::operator(&strct.name, "__operator_gt");
+ let link_name = mangle::operator(&strct.name, "gt");
writeln!(
out,
"bool {}(const {1} &, const {1} &) noexcept;",
link_name, strct.name.cxx,
);
- let link_name = mangle::operator(&strct.name, "__operator_ge");
+ let link_name = mangle::operator(&strct.name, "ge");
writeln!(
out,
"bool {}(const {1} &, const {1} &) noexcept;",
@@ -449,7 +449,7 @@
"bool {0}::operator==(const {0} &rhs) const noexcept {{",
strct.name.cxx,
);
- let link_name = mangle::operator(&strct.name, "__operator_eq");
+ let link_name = mangle::operator(&strct.name, "eq");
writeln!(out, " return {}(*this, rhs);", link_name);
writeln!(out, "}}");
@@ -462,7 +462,7 @@
if derive::contains(&strct.derives, Trait::Eq) {
writeln!(out, " return !(*this == rhs);");
} else {
- let link_name = mangle::operator(&strct.name, "__operator_ne");
+ let link_name = mangle::operator(&strct.name, "ne");
writeln!(out, " return {}(*this, rhs);", link_name);
}
writeln!(out, "}}");
@@ -475,7 +475,7 @@
"bool {0}::operator<(const {0} &rhs) const noexcept {{",
strct.name.cxx,
);
- let link_name = mangle::operator(&strct.name, "__operator_lt");
+ let link_name = mangle::operator(&strct.name, "lt");
writeln!(out, " return {}(*this, rhs);", link_name);
writeln!(out, "}}");
@@ -485,7 +485,7 @@
"bool {0}::operator<=(const {0} &rhs) const noexcept {{",
strct.name.cxx,
);
- let link_name = mangle::operator(&strct.name, "__operator_le");
+ let link_name = mangle::operator(&strct.name, "le");
writeln!(out, " return {}(*this, rhs);", link_name);
writeln!(out, "}}");
@@ -498,7 +498,7 @@
if derive::contains(&strct.derives, Trait::Ord) {
writeln!(out, " return !(*this <= rhs);");
} else {
- let link_name = mangle::operator(&strct.name, "__operator_gt");
+ let link_name = mangle::operator(&strct.name, "gt");
writeln!(out, " return {}(*this, rhs);", link_name);
}
writeln!(out, "}}");
@@ -512,7 +512,7 @@
if derive::contains(&strct.derives, Trait::Ord) {
writeln!(out, " return !(*this < rhs);");
} else {
- let link_name = mangle::operator(&strct.name, "__operator_ge");
+ let link_name = mangle::operator(&strct.name, "ge");
writeln!(out, " return {}(*this, rhs);", link_name);
}
writeln!(out, "}}");
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index 2b9c7d4..e065a55 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -165,7 +165,7 @@
let span = derive.span;
match derive.what {
Trait::PartialEq => {
- let link_name = mangle::operator(&strct.name, "__operator_eq");
+ let link_name = mangle::operator(&strct.name, "eq");
let local_name = format_ident!("__operator_eq_{}", strct.name.rust);
operators.extend(quote_spanned! {span=>
#[doc(hidden)]
@@ -176,7 +176,7 @@
});
if !derive::contains(&strct.derives, Trait::Eq) {
- let link_name = mangle::operator(&strct.name, "__operator_ne");
+ let link_name = mangle::operator(&strct.name, "ne");
let local_name = format_ident!("__operator_ne_{}", strct.name.rust);
operators.extend(quote_spanned! {span=>
#[doc(hidden)]
@@ -188,7 +188,7 @@
}
}
Trait::PartialOrd => {
- let link_name = mangle::operator(&strct.name, "__operator_lt");
+ let link_name = mangle::operator(&strct.name, "lt");
let local_name = format_ident!("__operator_lt_{}", strct.name.rust);
operators.extend(quote_spanned! {span=>
#[doc(hidden)]
@@ -198,7 +198,7 @@
}
});
- let link_name = mangle::operator(&strct.name, "__operator_le");
+ let link_name = mangle::operator(&strct.name, "le");
let local_name = format_ident!("__operator_le_{}", strct.name.rust);
operators.extend(quote_spanned! {span=>
#[doc(hidden)]
@@ -209,7 +209,7 @@
});
if !derive::contains(&strct.derives, Trait::Ord) {
- let link_name = mangle::operator(&strct.name, "__operator_gt");
+ let link_name = mangle::operator(&strct.name, "gt");
let local_name = format_ident!("__operator_gt_{}", strct.name.rust);
operators.extend(quote_spanned! {span=>
#[doc(hidden)]
@@ -219,7 +219,7 @@
}
});
- let link_name = mangle::operator(&strct.name, "__operator_ge");
+ let link_name = mangle::operator(&strct.name, "ge");
let local_name = format_ident!("__operator_ge_{}", strct.name.rust);
operators.extend(quote_spanned! {span=>
#[doc(hidden)]
diff --git a/syntax/mangle.rs b/syntax/mangle.rs
index ef605ef..26cd3c0 100644
--- a/syntax/mangle.rs
+++ b/syntax/mangle.rs
@@ -26,7 +26,7 @@
}
pub fn operator(receiver: &Pair, operator: &'static str) -> Symbol {
- join!(receiver.namespace, CXXBRIDGE, receiver.cxx, operator)
+ join!(receiver.namespace, CXXBRIDGE, receiver.cxx, "operator", operator)
}
// The C half of a function pointer trampoline.