mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-27 19:02:07 +00:00
Fix compile error
This commit is contained in:
parent
938dd8b9ca
commit
3127c78bc7
1 changed files with 37 additions and 5 deletions
|
@ -157,7 +157,7 @@ pub fn derive_refineable(input: TokenStream) -> TokenStream {
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let refinement_refined_assignments: Vec<TokenStream2> = fields
|
let refinement_refined_assigments: Vec<TokenStream2> = fields
|
||||||
.iter()
|
.iter()
|
||||||
.map(|field| {
|
.map(|field| {
|
||||||
let name = &field.ident;
|
let name = &field.ident;
|
||||||
|
@ -169,14 +169,37 @@ pub fn derive_refineable(input: TokenStream) -> TokenStream {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
quote! {
|
quote! {
|
||||||
if refinement.#name.is_some() {
|
if let Some(value) = refinement.#name {
|
||||||
self.#name = refinement.#name;
|
self.#name = Some(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
|
let from_refinement_assigments: Vec<TokenStream2> = fields
|
||||||
|
.iter()
|
||||||
|
.map(|field| {
|
||||||
|
let name = &field.ident;
|
||||||
|
let is_refineable = is_refineable_field(field);
|
||||||
|
let is_optional = is_optional_field(field);
|
||||||
|
|
||||||
|
if is_refineable {
|
||||||
|
quote! {
|
||||||
|
#name: value.#name.into(),
|
||||||
|
}
|
||||||
|
} else if is_optional {
|
||||||
|
quote! {
|
||||||
|
#name: value.#name.map(|v| v.into()),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
quote! {
|
||||||
|
#name: value.#name.map(|v| v.into()).unwrap_or_default(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
let debug_impl = if impl_debug_on_refinement {
|
let debug_impl = if impl_debug_on_refinement {
|
||||||
let refinement_field_debugs: Vec<TokenStream2> = fields
|
let refinement_field_debugs: Vec<TokenStream2> = fields
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -243,11 +266,21 @@ pub fn derive_refineable(input: TokenStream) -> TokenStream {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn refined(mut self, refinement: Self::Refinement) -> Self {
|
fn refined(mut self, refinement: Self::Refinement) -> Self {
|
||||||
#( #refinement_refined_assignments )*
|
#( #refinement_refined_assigments )*
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl #impl_generics From<#refinement_ident #ty_generics> for #ident #ty_generics
|
||||||
|
#where_clause
|
||||||
|
{
|
||||||
|
fn from(value: #refinement_ident #ty_generics) -> Self {
|
||||||
|
Self {
|
||||||
|
#( #from_refinement_assigments )*
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl #impl_generics ::core::default::Default for #refinement_ident #ty_generics
|
impl #impl_generics ::core::default::Default for #refinement_ident #ty_generics
|
||||||
#where_clause
|
#where_clause
|
||||||
{
|
{
|
||||||
|
@ -273,7 +306,6 @@ pub fn derive_refineable(input: TokenStream) -> TokenStream {
|
||||||
|
|
||||||
#debug_impl
|
#debug_impl
|
||||||
};
|
};
|
||||||
|
|
||||||
gen.into()
|
gen.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue