Skip to content

Commit b867288

Browse files
committed
Merge branch 'ijackson-leaking-bounds'
2 parents 47bd92f + 3f98647 commit b867288

40 files changed

+127
-89
lines changed

src/lib.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1910,7 +1910,7 @@ use syn::{
19101910
#[allow(unused)]
19111911
use trait_handlers::{TraitHandler, TraitHandlerMultiple};
19121912

1913-
fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenStream> {
1913+
fn derive_input_handler(ast: DeriveInput) -> syn::Result<proc_macro2::TokenStream> {
19141914
let mut token_stream = proc_macro2::TokenStream::new();
19151915
let mut trait_meta_map: HashMap<Trait, Vec<Meta>> = HashMap::new();
19161916

@@ -1960,7 +1960,7 @@ fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenS
19601960
{
19611961
if let Some(meta) = trait_meta_map.get(&Trait::Debug) {
19621962
trait_handlers::debug::DebugHandler::trait_meta_handler(
1963-
&mut ast,
1963+
&ast,
19641964
&mut token_stream,
19651965
&traits,
19661966
&meta[0],
@@ -1972,7 +1972,7 @@ fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenS
19721972
{
19731973
if let Some(meta) = trait_meta_map.get(&Trait::Clone) {
19741974
trait_handlers::clone::CloneHandler::trait_meta_handler(
1975-
&mut ast,
1975+
&ast,
19761976
&mut token_stream,
19771977
&traits,
19781978
&meta[0],
@@ -1984,7 +1984,7 @@ fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenS
19841984
{
19851985
if let Some(meta) = trait_meta_map.get(&Trait::Copy) {
19861986
trait_handlers::copy::CopyHandler::trait_meta_handler(
1987-
&mut ast,
1987+
&ast,
19881988
&mut token_stream,
19891989
&traits,
19901990
&meta[0],
@@ -1996,7 +1996,7 @@ fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenS
19961996
{
19971997
if let Some(meta) = trait_meta_map.get(&Trait::PartialEq) {
19981998
trait_handlers::partial_eq::PartialEqHandler::trait_meta_handler(
1999-
&mut ast,
1999+
&ast,
20002000
&mut token_stream,
20012001
&traits,
20022002
&meta[0],
@@ -2008,7 +2008,7 @@ fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenS
20082008
{
20092009
if let Some(meta) = trait_meta_map.get(&Trait::Eq) {
20102010
trait_handlers::eq::EqHandler::trait_meta_handler(
2011-
&mut ast,
2011+
&ast,
20122012
&mut token_stream,
20132013
&traits,
20142014
&meta[0],
@@ -2020,7 +2020,7 @@ fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenS
20202020
{
20212021
if let Some(meta) = trait_meta_map.get(&Trait::PartialOrd) {
20222022
trait_handlers::partial_ord::PartialOrdHandler::trait_meta_handler(
2023-
&mut ast,
2023+
&ast,
20242024
&mut token_stream,
20252025
&traits,
20262026
&meta[0],
@@ -2032,7 +2032,7 @@ fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenS
20322032
{
20332033
if let Some(meta) = trait_meta_map.get(&Trait::Ord) {
20342034
trait_handlers::ord::OrdHandler::trait_meta_handler(
2035-
&mut ast,
2035+
&ast,
20362036
&mut token_stream,
20372037
&traits,
20382038
&meta[0],
@@ -2044,7 +2044,7 @@ fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenS
20442044
{
20452045
if let Some(meta) = trait_meta_map.get(&Trait::Hash) {
20462046
trait_handlers::hash::HashHandler::trait_meta_handler(
2047-
&mut ast,
2047+
&ast,
20482048
&mut token_stream,
20492049
&traits,
20502050
&meta[0],
@@ -2056,7 +2056,7 @@ fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenS
20562056
{
20572057
if let Some(meta) = trait_meta_map.get(&Trait::Default) {
20582058
trait_handlers::default::DefaultHandler::trait_meta_handler(
2059-
&mut ast,
2059+
&ast,
20602060
&mut token_stream,
20612061
&traits,
20622062
&meta[0],
@@ -2068,7 +2068,7 @@ fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenS
20682068
{
20692069
if let Some(meta) = trait_meta_map.get(&Trait::Deref) {
20702070
trait_handlers::deref::DerefHandler::trait_meta_handler(
2071-
&mut ast,
2071+
&ast,
20722072
&mut token_stream,
20732073
&traits,
20742074
&meta[0],
@@ -2080,7 +2080,7 @@ fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenS
20802080
{
20812081
if let Some(meta) = trait_meta_map.get(&Trait::DerefMut) {
20822082
trait_handlers::deref_mut::DerefMutHandler::trait_meta_handler(
2083-
&mut ast,
2083+
&ast,
20842084
&mut token_stream,
20852085
&traits,
20862086
&meta[0],
@@ -2092,7 +2092,7 @@ fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenS
20922092
{
20932093
if let Some(meta) = trait_meta_map.get(&Trait::Into) {
20942094
trait_handlers::into::IntoHandler::trait_meta_handler(
2095-
&mut ast,
2095+
&ast,
20962096
&mut token_stream,
20972097
&traits,
20982098
meta,
@@ -2102,7 +2102,7 @@ fn derive_input_handler(mut ast: DeriveInput) -> syn::Result<proc_macro2::TokenS
21022102

21032103
if trait_meta_map.contains_key(&Trait::_Nothing) {
21042104
// avoid unused warnings
2105-
let _ = &mut ast;
2105+
let _ = &ast;
21062106
let _ = &mut token_stream;
21072107
let _ = traits;
21082108
unreachable!();

src/trait_handlers/clone/clone_enum.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub(crate) struct CloneEnumHandler;
1111
impl TraitHandler for CloneEnumHandler {
1212
#[inline]
1313
fn trait_meta_handler(
14-
ast: &mut DeriveInput,
14+
ast: &DeriveInput,
1515
token_stream: &mut proc_macro2::TokenStream,
1616
traits: &[Trait],
1717
meta: &Meta,
@@ -239,13 +239,14 @@ impl TraitHandler for CloneEnumHandler {
239239

240240
let ident = &ast.ident;
241241

242-
let where_clause = ast.generics.make_where_clause();
242+
let mut generics = ast.generics.clone();
243+
let where_clause = generics.make_where_clause();
243244

244245
for where_predicate in bound {
245246
where_clause.predicates.push(where_predicate);
246247
}
247248

248-
let (impl_generics, ty_generics, where_clause) = ast.generics.split_for_impl();
249+
let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
249250

250251
token_stream.extend(quote! {
251252
impl #impl_generics ::core::clone::Clone for #ident #ty_generics #where_clause {

src/trait_handlers/clone/clone_struct.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub(crate) struct CloneStructHandler;
1111
impl TraitHandler for CloneStructHandler {
1212
#[inline]
1313
fn trait_meta_handler(
14-
ast: &mut DeriveInput,
14+
ast: &DeriveInput,
1515
token_stream: &mut proc_macro2::TokenStream,
1616
traits: &[Trait],
1717
meta: &Meta,
@@ -162,13 +162,14 @@ impl TraitHandler for CloneStructHandler {
162162

163163
let ident = &ast.ident;
164164

165-
let where_clause = ast.generics.make_where_clause();
165+
let mut generics = ast.generics.clone();
166+
let where_clause = generics.make_where_clause();
166167

167168
for where_predicate in bound {
168169
where_clause.predicates.push(where_predicate);
169170
}
170171

171-
let (impl_generics, ty_generics, where_clause) = ast.generics.split_for_impl();
172+
let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
172173

173174
token_stream.extend(quote! {
174175
impl #impl_generics ::core::clone::Clone for #ident #ty_generics #where_clause {

src/trait_handlers/clone/clone_union.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub(crate) struct CloneUnionHandler;
1111

1212
impl TraitHandler for CloneUnionHandler {
1313
fn trait_meta_handler(
14-
ast: &mut DeriveInput,
14+
ast: &DeriveInput,
1515
token_stream: &mut proc_macro2::TokenStream,
1616
traits: &[Trait],
1717
meta: &Meta,
@@ -42,13 +42,14 @@ impl TraitHandler for CloneUnionHandler {
4242
&[],
4343
);
4444

45-
let where_clause = ast.generics.make_where_clause();
45+
let mut generics = ast.generics.clone();
46+
let where_clause = generics.make_where_clause();
4647

4748
for where_predicate in bound {
4849
where_clause.predicates.push(where_predicate);
4950
}
5051

51-
let (impl_generics, ty_generics, where_clause) = ast.generics.split_for_impl();
52+
let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
5253

5354
token_stream.extend(quote! {
5455
impl #impl_generics ::core::clone::Clone for #ident #ty_generics #where_clause {

src/trait_handlers/clone/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub(crate) struct CloneHandler;
1313
impl TraitHandler for CloneHandler {
1414
#[inline]
1515
fn trait_meta_handler(
16-
ast: &mut DeriveInput,
16+
ast: &DeriveInput,
1717
token_stream: &mut proc_macro2::TokenStream,
1818
traits: &[Trait],
1919
meta: &Meta,

src/trait_handlers/copy/mod.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pub(crate) struct CopyHandler;
1212
impl TraitHandler for CopyHandler {
1313
#[inline]
1414
fn trait_meta_handler(
15-
ast: &mut DeriveInput,
15+
ast: &DeriveInput,
1616
token_stream: &mut proc_macro2::TokenStream,
1717
traits: &[Trait],
1818
meta: &Meta,
@@ -74,13 +74,14 @@ impl TraitHandler for CopyHandler {
7474
&[quote! {::core::clone::Clone}],
7575
);
7676

77-
let where_clause = ast.generics.make_where_clause();
77+
let mut generics = ast.generics.clone();
78+
let where_clause = generics.make_where_clause();
7879

7980
for where_predicate in bound {
8081
where_clause.predicates.push(where_predicate);
8182
}
8283

83-
let (impl_generics, ty_generics, where_clause) = ast.generics.split_for_impl();
84+
let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
8485

8586
token_stream.extend(quote! {
8687
impl #impl_generics ::core::marker::Copy for #ident #ty_generics #where_clause {

src/trait_handlers/debug/debug_enum.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ pub(crate) struct DebugEnumHandler;
88

99
impl TraitHandler for DebugEnumHandler {
1010
fn trait_meta_handler(
11-
ast: &mut DeriveInput,
11+
ast: &DeriveInput,
1212
token_stream: &mut proc_macro2::TokenStream,
1313
traits: &[Trait],
1414
meta: &Meta,
@@ -339,13 +339,14 @@ impl TraitHandler for DebugEnumHandler {
339339
&[],
340340
);
341341

342-
let where_clause = ast.generics.make_where_clause();
342+
let mut generics = ast.generics.clone();
343+
let where_clause = generics.make_where_clause();
343344

344345
for where_predicate in bound {
345346
where_clause.predicates.push(where_predicate);
346347
}
347348

348-
let (impl_generics, ty_generics, where_clause) = ast.generics.split_for_impl();
349+
let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
349350

350351
token_stream.extend(quote! {
351352
impl #impl_generics ::core::fmt::Debug for #ident #ty_generics #where_clause {

src/trait_handlers/debug/debug_struct.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub struct DebugStructHandler;
1111

1212
impl TraitHandler for DebugStructHandler {
1313
fn trait_meta_handler(
14-
ast: &mut DeriveInput,
14+
ast: &DeriveInput,
1515
token_stream: &mut proc_macro2::TokenStream,
1616
traits: &[Trait],
1717
meta: &Meta,
@@ -160,13 +160,14 @@ impl TraitHandler for DebugStructHandler {
160160
&[],
161161
);
162162

163-
let where_clause = ast.generics.make_where_clause();
163+
let mut generics = ast.generics.clone();
164+
let where_clause = generics.make_where_clause();
164165

165166
for where_predicate in bound {
166167
where_clause.predicates.push(where_predicate);
167168
}
168169

169-
let (impl_generics, ty_generics, where_clause) = ast.generics.split_for_impl();
170+
let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
170171

171172
token_stream.extend(quote! {
172173
impl #impl_generics ::core::fmt::Debug for #ident #ty_generics #where_clause {

src/trait_handlers/debug/debug_union.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub(crate) struct DebugUnionHandler;
1111

1212
impl TraitHandler for DebugUnionHandler {
1313
fn trait_meta_handler(
14-
ast: &mut DeriveInput,
14+
ast: &DeriveInput,
1515
token_stream: &mut proc_macro2::TokenStream,
1616
traits: &[Trait],
1717
meta: &Meta,

src/trait_handlers/debug/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ pub(crate) struct DebugHandler;
1515
impl TraitHandler for DebugHandler {
1616
#[inline]
1717
fn trait_meta_handler(
18-
ast: &mut DeriveInput,
18+
ast: &DeriveInput,
1919
token_stream: &mut proc_macro2::TokenStream,
2020
traits: &[Trait],
2121
meta: &Meta,

0 commit comments

Comments
 (0)