Skip to content

Commit 378533b

Browse files
committed
Switch ty_generics to use GenericArgument enum
1 parent 4429fe6 commit 378533b

1 file changed

Lines changed: 19 additions & 11 deletions

File tree

pin-init-internal/src/pin_init.rs

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
use std::convert::TryFrom;
22

33
use proc_macro2::{Span, TokenStream};
4-
use quote::{format_ident, quote, quote_spanned, ToTokens};
4+
use quote::{format_ident, quote, quote_spanned};
55
use syn::parse::{discouraged::Speculative, Parse, ParseStream};
6+
use syn::GenericArgument;
67
use syn::{
78
braced, punctuated::Punctuated, token::Brace, Data, DeriveInput, Error, Expr, ExprPath, Fields,
89
GenericParam, Generics, ItemStruct, LifetimeParam, Member, Path, Token, TraitBound,
@@ -47,6 +48,23 @@ pub fn pin_init_derive(input: TokenStream) -> Result<TokenStream> {
4748
}
4849
};
4950

51+
let ty_generics: Vec<_> = generics
52+
.params
53+
.iter()
54+
.map(|x| match x {
55+
GenericParam::Lifetime(l) => GenericArgument::Lifetime(l.lifetime.clone()),
56+
GenericParam::Type(t) => GenericArgument::Type(syn::Type::Path(syn::TypePath {
57+
qself: None,
58+
path: Path::from(t.ident.clone()),
59+
})),
60+
GenericParam::Const(c) => GenericArgument::Const(syn::Expr::Path(ExprPath {
61+
attrs: Vec::new(),
62+
qself: None,
63+
path: Path::from(c.ident.clone()),
64+
})),
65+
})
66+
.collect();
67+
5068
let (mut fields, named) = match data.fields {
5169
Fields::Named(v) => (v.named, true),
5270
Fields::Unnamed(v) => (v.unnamed, false),
@@ -113,16 +131,6 @@ pub fn pin_init_derive(input: TokenStream) -> Result<TokenStream> {
113131
x
114132
})
115133
.collect();
116-
let ty_generics: Vec<_> = generics
117-
.iter()
118-
.map(|x| -> &dyn ToTokens {
119-
match x {
120-
GenericParam::Lifetime(l) => &l.lifetime,
121-
GenericParam::Type(t) => &t.ident,
122-
GenericParam::Const(c) => &c.ident,
123-
}
124-
})
125-
.collect();
126134

127135
// Create identifier names that are unlikely to be used.
128136
let typestate_name: Vec<_> = field_name

0 commit comments

Comments
 (0)