Skip to content

Commit 753f42a

Browse files
committed
Fill in elided lifetimes on derived operators
1 parent e0966f7 commit 753f42a

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

macro/src/expand.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ fn expand_struct(strct: &Struct) -> TokenStream {
186186

187187
fn expand_struct_operators(strct: &Struct) -> TokenStream {
188188
let ident = &strct.name.rust;
189+
let generics = &strct.generics;
189190
let mut operators = TokenStream::new();
190191

191192
for derive in &strct.derives {
@@ -198,7 +199,7 @@ fn expand_struct_operators(strct: &Struct) -> TokenStream {
198199
operators.extend(quote_spanned! {span=>
199200
#[doc(hidden)]
200201
#[export_name = #link_name]
201-
extern "C" fn #local_name(lhs: &#ident, rhs: &#ident) -> bool {
202+
extern "C" fn #local_name #generics(lhs: &#ident #generics, rhs: &#ident #generics) -> bool {
202203
let __fn = concat!("<", module_path!(), #prevent_unwind_label);
203204
::cxx::private::prevent_unwind(__fn, || *lhs == *rhs)
204205
}
@@ -211,7 +212,7 @@ fn expand_struct_operators(strct: &Struct) -> TokenStream {
211212
operators.extend(quote_spanned! {span=>
212213
#[doc(hidden)]
213214
#[export_name = #link_name]
214-
extern "C" fn #local_name(lhs: &#ident, rhs: &#ident) -> bool {
215+
extern "C" fn #local_name #generics(lhs: &#ident #generics, rhs: &#ident #generics) -> bool {
215216
let __fn = concat!("<", module_path!(), #prevent_unwind_label);
216217
::cxx::private::prevent_unwind(__fn, || *lhs != *rhs)
217218
}
@@ -225,7 +226,7 @@ fn expand_struct_operators(strct: &Struct) -> TokenStream {
225226
operators.extend(quote_spanned! {span=>
226227
#[doc(hidden)]
227228
#[export_name = #link_name]
228-
extern "C" fn #local_name(lhs: &#ident, rhs: &#ident) -> bool {
229+
extern "C" fn #local_name #generics(lhs: &#ident #generics, rhs: &#ident #generics) -> bool {
229230
let __fn = concat!("<", module_path!(), #prevent_unwind_label);
230231
::cxx::private::prevent_unwind(__fn, || *lhs < *rhs)
231232
}
@@ -237,7 +238,7 @@ fn expand_struct_operators(strct: &Struct) -> TokenStream {
237238
operators.extend(quote_spanned! {span=>
238239
#[doc(hidden)]
239240
#[export_name = #link_name]
240-
extern "C" fn #local_name(lhs: &#ident, rhs: &#ident) -> bool {
241+
extern "C" fn #local_name #generics(lhs: &#ident #generics, rhs: &#ident #generics) -> bool {
241242
let __fn = concat!("<", module_path!(), #prevent_unwind_label);
242243
::cxx::private::prevent_unwind(__fn, || *lhs <= *rhs)
243244
}
@@ -250,7 +251,7 @@ fn expand_struct_operators(strct: &Struct) -> TokenStream {
250251
operators.extend(quote_spanned! {span=>
251252
#[doc(hidden)]
252253
#[export_name = #link_name]
253-
extern "C" fn #local_name(lhs: &#ident, rhs: &#ident) -> bool {
254+
extern "C" fn #local_name #generics(lhs: &#ident #generics, rhs: &#ident #generics) -> bool {
254255
let __fn = concat!("<", module_path!(), #prevent_unwind_label);
255256
::cxx::private::prevent_unwind(__fn, || *lhs > *rhs)
256257
}
@@ -262,7 +263,7 @@ fn expand_struct_operators(strct: &Struct) -> TokenStream {
262263
operators.extend(quote_spanned! {span=>
263264
#[doc(hidden)]
264265
#[export_name = #link_name]
265-
extern "C" fn #local_name(lhs: &#ident, rhs: &#ident) -> bool {
266+
extern "C" fn #local_name #generics(lhs: &#ident #generics, rhs: &#ident #generics) -> bool {
266267
let __fn = concat!("<", module_path!(), #prevent_unwind_label);
267268
::cxx::private::prevent_unwind(__fn, || *lhs >= *rhs)
268269
}
@@ -277,7 +278,7 @@ fn expand_struct_operators(strct: &Struct) -> TokenStream {
277278
#[doc(hidden)]
278279
#[export_name = #link_name]
279280
#[allow(clippy::cast_possible_truncation)]
280-
extern "C" fn #local_name(this: &#ident) -> usize {
281+
extern "C" fn #local_name #generics(this: &#ident #generics) -> usize {
281282
let __fn = concat!("<", module_path!(), #prevent_unwind_label);
282283
::cxx::private::prevent_unwind(__fn, || ::cxx::private::hash(this))
283284
}

0 commit comments

Comments
 (0)