Skip to content

Commit 5da5cce

Browse files
Add some minor clean up.
1 parent 0f0ba65 commit 5da5cce

File tree

2 files changed

+24
-38
lines changed

2 files changed

+24
-38
lines changed

src/generate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ fn expr_to_string(expr: &Expr) -> Option<String> {
7171
}
7272

7373
// Helper function to parse visibility
74-
fn parse_vis_str(s: &str, span: proc_macro2::Span) -> Visibility {
74+
fn parse_vis_str(s: &str, span: Span) -> Visibility {
7575
match syn::parse_str(s) {
7676
Ok(vis) => vis,
7777
Err(e) => abort!(span, "Invalid visibility found: {}", e),

src/lib.rs

Lines changed: 23 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,10 @@ extern crate quote;
208208
use proc_macro::TokenStream;
209209
use proc_macro2::TokenStream as TokenStream2;
210210
use proc_macro_error2::{abort, abort_call_site, proc_macro_error};
211-
use syn::{parse_macro_input, spanned::Spanned, DataStruct, DeriveInput, Meta};
211+
use syn::{
212+
parse_macro_input, punctuated::Punctuated, spanned::Spanned, Attribute, Data, DataStruct,
213+
DeriveInput, Fields, Meta, Token,
214+
};
212215

213216
use crate::generate::{GenMode, GenParams};
214217

@@ -218,10 +221,7 @@ mod generate;
218221
#[proc_macro_error]
219222
pub fn getters(input: TokenStream) -> TokenStream {
220223
let ast = parse_macro_input!(input as DeriveInput);
221-
let params = GenParams {
222-
mode: GenMode::Get,
223-
global_attr: parse_global_attr(&ast.attrs, GenMode::Get),
224-
};
224+
let params = make_params(&ast.attrs, GenMode::Get);
225225

226226
produce(&ast, &params).into()
227227
}
@@ -230,10 +230,7 @@ pub fn getters(input: TokenStream) -> TokenStream {
230230
#[proc_macro_error]
231231
pub fn clone_getters(input: TokenStream) -> TokenStream {
232232
let ast = parse_macro_input!(input as DeriveInput);
233-
let params = GenParams {
234-
mode: GenMode::GetClone,
235-
global_attr: parse_global_attr(&ast.attrs, GenMode::GetClone),
236-
};
233+
let params = make_params(&ast.attrs, GenMode::GetClone);
237234

238235
produce(&ast, &params).into()
239236
}
@@ -242,10 +239,7 @@ pub fn clone_getters(input: TokenStream) -> TokenStream {
242239
#[proc_macro_error]
243240
pub fn copy_getters(input: TokenStream) -> TokenStream {
244241
let ast = parse_macro_input!(input as DeriveInput);
245-
let params = GenParams {
246-
mode: GenMode::GetCopy,
247-
global_attr: parse_global_attr(&ast.attrs, GenMode::GetCopy),
248-
};
242+
let params = make_params(&ast.attrs, GenMode::GetCopy);
249243

250244
produce(&ast, &params).into()
251245
}
@@ -254,10 +248,7 @@ pub fn copy_getters(input: TokenStream) -> TokenStream {
254248
#[proc_macro_error]
255249
pub fn mut_getters(input: TokenStream) -> TokenStream {
256250
let ast = parse_macro_input!(input as DeriveInput);
257-
let params = GenParams {
258-
mode: GenMode::GetMut,
259-
global_attr: parse_global_attr(&ast.attrs, GenMode::GetMut),
260-
};
251+
let params = make_params(&ast.attrs, GenMode::GetMut);
261252

262253
produce(&ast, &params).into()
263254
}
@@ -266,10 +257,7 @@ pub fn mut_getters(input: TokenStream) -> TokenStream {
266257
#[proc_macro_error]
267258
pub fn setters(input: TokenStream) -> TokenStream {
268259
let ast = parse_macro_input!(input as DeriveInput);
269-
let params = GenParams {
270-
mode: GenMode::Set,
271-
global_attr: parse_global_attr(&ast.attrs, GenMode::Set),
272-
};
260+
let params = make_params(&ast.attrs, GenMode::Set);
273261

274262
produce(&ast, &params).into()
275263
}
@@ -278,27 +266,25 @@ pub fn setters(input: TokenStream) -> TokenStream {
278266
#[proc_macro_error]
279267
pub fn with_setters(input: TokenStream) -> TokenStream {
280268
let ast = parse_macro_input!(input as DeriveInput);
281-
let params = GenParams {
282-
mode: GenMode::SetWith,
283-
global_attr: parse_global_attr(&ast.attrs, GenMode::SetWith),
284-
};
269+
let params = make_params(&ast.attrs, GenMode::SetWith);
285270

286271
produce(&ast, &params).into()
287272
}
288273

289-
fn parse_global_attr(attrs: &[syn::Attribute], mode: GenMode) -> Option<Meta> {
290-
attrs.iter().filter_map(|v| parse_attr(v, mode)).last()
274+
fn make_params(attrs: &[Attribute], mode: GenMode) -> GenParams {
275+
GenParams {
276+
mode,
277+
global_attr: attrs.iter().filter_map(|v| parse_attr(v, mode)).last(),
278+
}
291279
}
292280

293-
fn parse_attr(attr: &syn::Attribute, mode: GenMode) -> Option<syn::Meta> {
294-
use syn::{punctuated::Punctuated, Token};
295-
281+
fn parse_attr(attr: &Attribute, mode: GenMode) -> Option<Meta> {
296282
if attr.path().is_ident("getset") {
297-
let meta_list =
298-
match attr.parse_args_with(Punctuated::<syn::Meta, Token![,]>::parse_terminated) {
299-
Ok(list) => list,
300-
Err(e) => abort!(attr.span(), "Failed to parse getset attribute: {}", e),
301-
};
283+
let meta_list = match attr.parse_args_with(Punctuated::<Meta, Token![,]>::parse_terminated)
284+
{
285+
Ok(list) => list,
286+
Err(e) => abort!(attr.span(), "Failed to parse getset attribute: {}", e),
287+
};
302288

303289
let (last, skip, mut collected) = meta_list
304290
.into_iter()
@@ -357,9 +343,9 @@ fn produce(ast: &DeriveInput, params: &GenParams) -> TokenStream2 {
357343
let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
358344

359345
// Is it a struct?
360-
if let syn::Data::Struct(DataStruct { ref fields, .. }) = ast.data {
346+
if let Data::Struct(DataStruct { ref fields, .. }) = ast.data {
361347
// Handle unary struct
362-
if matches!(fields, syn::Fields::Unnamed(_)) {
348+
if matches!(fields, Fields::Unnamed(_)) {
363349
if fields.len() != 1 {
364350
abort_call_site!("Only support unary struct!");
365351
}

0 commit comments

Comments
 (0)