Skip to content

Commit 7131623

Browse files
committed
feat: v2.0.25
1 parent 67a7250 commit 7131623

File tree

3 files changed

+27
-21
lines changed

3 files changed

+27
-21
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "lombok-macros"
3-
version = "2.0.24"
3+
version = "2.0.25"
44
readme = "README.md"
55
edition = "2024"
66
authors = ["root@ltpp.vip"]

src/generate/fn.rs

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -205,23 +205,30 @@ fn generate_param_type(
205205
) -> TokenStream2 {
206206
if let Some(override_type) = param_type_override {
207207
let type_str: String = override_type.to_string();
208-
let param_type: ParameterType = ParameterType::from(type_str.as_str());
208+
let type_str_normalized: String = type_str.replace(' ', "");
209+
let param_type: ParameterType = ParameterType::from(type_str_normalized.as_str());
209210
match param_type {
210-
ParameterType::AsRef => {
211-
quote! { impl #override_type }
212-
}
213-
ParameterType::Into => {
214-
quote! { impl #override_type }
215-
}
216-
ParameterType::AsMut => {
217-
quote! { impl #override_type }
218-
}
219-
ParameterType::Deref => {
220-
quote! { impl #override_type }
211+
ParameterType::AsRef
212+
| ParameterType::Into
213+
| ParameterType::AsMut
214+
| ParameterType::Deref => {
215+
if let Ok(parsed_type) = parse2::<Type>(override_type.clone()) {
216+
quote! { impl #parsed_type }
217+
} else {
218+
let type_tokens: TokenStream2 = override_type.clone();
219+
quote! { impl #type_tokens }
220+
}
221221
}
222222
ParameterType::Direct => override_type.clone(),
223223
ParameterType::Custom(custom_tokens) => {
224-
quote! { impl #custom_tokens }
224+
let custom_tokens_stream: TokenStream2 = custom_tokens
225+
.parse()
226+
.unwrap_or_else(|_| override_type.clone());
227+
if let Ok(parsed_type) = parse2::<Type>(custom_tokens_stream.clone()) {
228+
quote! { impl #parsed_type }
229+
} else {
230+
quote! { impl #custom_tokens_stream }
231+
}
225232
}
226233
}
227234
} else {
@@ -245,7 +252,8 @@ fn generate_assignment(
245252
) -> TokenStream2 {
246253
if let Some(override_type) = param_type_override {
247254
let type_str: String = override_type.to_string();
248-
let param_type: ParameterType = ParameterType::from(type_str.as_str());
255+
let type_str_normalized: String = type_str.replace(' ', "");
256+
let param_type: ParameterType = ParameterType::from(type_str_normalized.as_str());
249257
match param_type {
250258
ParameterType::AsRef => {
251259
quote! { self.#field_ident = val.as_ref().to_owned(); }
@@ -281,7 +289,8 @@ fn generate_assignment_tuple(
281289
) -> TokenStream2 {
282290
if let Some(override_type) = param_type_override {
283291
let type_str: String = override_type.to_string();
284-
let param_type: ParameterType = ParameterType::from(type_str.as_str());
292+
let type_str_normalized: String = type_str.replace(' ', "");
293+
let param_type: ParameterType = ParameterType::from(type_str_normalized.as_str());
285294
match param_type {
286295
ParameterType::AsRef => {
287296
quote! { self.#field_index = val.as_ref().to_owned(); }

src/lib.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,8 @@ use {
2020
},
2121
quote::{ToTokens, format_ident, quote},
2222
syn::{
23-
Data, DeriveInput, Field, Fields, GenericArgument,
24-
GenericParam::{self},
25-
Generics, Ident, Index, Lifetime, PathArguments,
26-
Type::{self},
27-
TypeParam, Variant, WhereClause, parse_macro_input,
23+
Data, DeriveInput, Field, Fields, GenericArgument, GenericParam, Generics, Ident, Index,
24+
Lifetime, PathArguments, Type, TypeParam, Variant, WhereClause, parse_macro_input, parse2,
2825
},
2926
};
3027

0 commit comments

Comments
 (0)