Skip to content

Commit bc273b9

Browse files
authored
Merge pull request #1510 from dtolnay/borrowasptr
Resolve borrow_as_ptr clippy lints in generated code
2 parents 6b47bbd + ade7f2d commit bc273b9

File tree

1 file changed

+37
-11
lines changed

1 file changed

+37
-11
lines changed

macro/src/expand.rs

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1463,6 +1463,11 @@ fn expand_unique_ptr(
14631463

14641464
let can_construct_from_value = types.is_maybe_trivial(ident);
14651465
let new_method = if can_construct_from_value {
1466+
let raw_mut = if rustversion::cfg!(since(1.82)) {
1467+
quote!(&raw mut)
1468+
} else {
1469+
quote!(&mut)
1470+
};
14661471
Some(quote! {
14671472
fn __new(value: Self) -> ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void> {
14681473
#UnsafeExtern extern "C" {
@@ -1471,7 +1476,7 @@ fn expand_unique_ptr(
14711476
}
14721477
let mut repr = ::cxx::core::mem::MaybeUninit::uninit();
14731478
unsafe {
1474-
__uninit(&mut repr).cast::<#ident #ty_generics>().write(value);
1479+
__uninit(#raw_mut repr).cast::<#ident #ty_generics>().write(value);
14751480
}
14761481
repr
14771482
}
@@ -1483,6 +1488,16 @@ fn expand_unique_ptr(
14831488
let begin_span = explicit_impl.map_or(key.begin_span, |explicit| explicit.impl_token.span);
14841489
let end_span = explicit_impl.map_or(key.end_span, |explicit| explicit.brace_token.span.join());
14851490
let unsafe_token = format_ident!("unsafe", span = begin_span);
1491+
let raw_const = if rustversion::cfg!(since(1.82)) {
1492+
quote_spanned!(end_span=> &raw const)
1493+
} else {
1494+
quote_spanned!(end_span=> &)
1495+
};
1496+
let raw_mut = if rustversion::cfg!(since(1.82)) {
1497+
quote_spanned!(end_span=> &raw mut)
1498+
} else {
1499+
quote_spanned!(end_span=> &mut)
1500+
};
14861501

14871502
quote_spanned! {end_span=>
14881503
#[automatically_derived]
@@ -1497,7 +1512,7 @@ fn expand_unique_ptr(
14971512
}
14981513
let mut repr = ::cxx::core::mem::MaybeUninit::uninit();
14991514
unsafe {
1500-
__null(&mut repr);
1515+
__null(#raw_mut repr);
15011516
}
15021517
repr
15031518
}
@@ -1509,7 +1524,7 @@ fn expand_unique_ptr(
15091524
}
15101525
let mut repr = ::cxx::core::mem::MaybeUninit::uninit();
15111526
unsafe {
1512-
__raw(&mut repr, raw.cast());
1527+
__raw(#raw_mut repr, raw.cast());
15131528
}
15141529
repr
15151530
}
@@ -1518,22 +1533,22 @@ fn expand_unique_ptr(
15181533
#[link_name = #link_get]
15191534
fn __get(this: *const ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *const ::cxx::core::ffi::c_void;
15201535
}
1521-
unsafe { __get(&repr).cast() }
1536+
unsafe { __get(#raw_const repr).cast() }
15221537
}
15231538
unsafe fn __release(mut repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *mut Self {
15241539
#UnsafeExtern extern "C" {
15251540
#[link_name = #link_release]
15261541
fn __release(this: *mut ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *mut ::cxx::core::ffi::c_void;
15271542
}
1528-
unsafe { __release(&mut repr).cast() }
1543+
unsafe { __release(#raw_mut repr).cast() }
15291544
}
15301545
unsafe fn __drop(mut repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) {
15311546
#UnsafeExtern extern "C" {
15321547
#[link_name = #link_drop]
15331548
fn __drop(this: *mut ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>);
15341549
}
15351550
unsafe {
1536-
__drop(&mut repr);
1551+
__drop(#raw_mut repr);
15371552
}
15381553
}
15391554
}
@@ -1769,6 +1784,17 @@ fn expand_cxx_vector(
17691784
None
17701785
};
17711786

1787+
let raw_const = if rustversion::cfg!(since(1.82)) {
1788+
quote_spanned!(end_span=> &raw const)
1789+
} else {
1790+
quote_spanned!(end_span=> &)
1791+
};
1792+
let raw_mut = if rustversion::cfg!(since(1.82)) {
1793+
quote_spanned!(end_span=> &raw mut)
1794+
} else {
1795+
quote_spanned!(end_span=> &mut)
1796+
};
1797+
17721798
quote_spanned! {end_span=>
17731799
#[automatically_derived]
17741800
#unsafe_token impl #impl_generics ::cxx::private::VectorElement for #elem #ty_generics {
@@ -1807,7 +1833,7 @@ fn expand_cxx_vector(
18071833
}
18081834
let mut repr = ::cxx::core::mem::MaybeUninit::uninit();
18091835
unsafe {
1810-
__unique_ptr_null(&mut repr);
1836+
__unique_ptr_null(#raw_mut repr);
18111837
}
18121838
repr
18131839
}
@@ -1818,7 +1844,7 @@ fn expand_cxx_vector(
18181844
}
18191845
let mut repr = ::cxx::core::mem::MaybeUninit::uninit();
18201846
unsafe {
1821-
__unique_ptr_raw(&mut repr, raw);
1847+
__unique_ptr_raw(#raw_mut repr, raw);
18221848
}
18231849
repr
18241850
}
@@ -1827,22 +1853,22 @@ fn expand_cxx_vector(
18271853
#[link_name = #link_unique_ptr_get]
18281854
fn __unique_ptr_get #impl_generics(this: *const ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *const ::cxx::CxxVector<#elem #ty_generics>;
18291855
}
1830-
unsafe { __unique_ptr_get(&repr) }
1856+
unsafe { __unique_ptr_get(#raw_const repr) }
18311857
}
18321858
unsafe fn __unique_ptr_release(mut repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *mut ::cxx::CxxVector<Self> {
18331859
#UnsafeExtern extern "C" {
18341860
#[link_name = #link_unique_ptr_release]
18351861
fn __unique_ptr_release #impl_generics(this: *mut ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) -> *mut ::cxx::CxxVector<#elem #ty_generics>;
18361862
}
1837-
unsafe { __unique_ptr_release(&mut repr) }
1863+
unsafe { __unique_ptr_release(#raw_mut repr) }
18381864
}
18391865
unsafe fn __unique_ptr_drop(mut repr: ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>) {
18401866
#UnsafeExtern extern "C" {
18411867
#[link_name = #link_unique_ptr_drop]
18421868
fn __unique_ptr_drop(this: *mut ::cxx::core::mem::MaybeUninit<*mut ::cxx::core::ffi::c_void>);
18431869
}
18441870
unsafe {
1845-
__unique_ptr_drop(&mut repr);
1871+
__unique_ptr_drop(#raw_mut repr);
18461872
}
18471873
}
18481874
}

0 commit comments

Comments
 (0)