Skip to content

Commit

Permalink
chore: remove encodable_ignored
Browse files Browse the repository at this point in the history
  • Loading branch information
elsirion committed May 27, 2024
1 parent a12b8b0 commit 24ff267
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 30 deletions.
5 changes: 1 addition & 4 deletions fedimint-client/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,7 @@ use db::{
use fedimint_api_client::api::{
ApiVersionSet, DynGlobalApi, DynModuleApi, FederationApiExt, IGlobalFederationApi,
};
use fedimint_core::config::{
ClientConfig, ClientModuleConfig, FederationId, JsonClientConfig, JsonWithKind,
ModuleInitRegistry,
};
use fedimint_core::config::{ClientConfig, FederationId, JsonClientConfig, ModuleInitRegistry};
use fedimint_core::core::{
DynInput, DynOutput, IInput, IOutput, ModuleInstanceId, ModuleKind, OperationId,
};
Expand Down
31 changes: 5 additions & 26 deletions fedimint-derive/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,10 @@ use quote::{format_ident, quote};
use syn::punctuated::Punctuated;
use syn::token::Comma;
use syn::{
parse_macro_input, Attribute, Data, DataEnum, DataStruct, DeriveInput, Field, Fields, Index,
Lit, Token, Variant,
parse_macro_input, Attribute, Data, DataEnum, DataStruct, DeriveInput, Fields, Index, Lit,
Token, Variant,
};

fn do_not_ignore(field: &Field) -> bool {
!field
.attrs
.iter()
.any(|attr| attr.path().is_ident("encodable_ignore"))
}

fn panic_if_ignored(field: &Field) -> bool {
assert!(
do_not_ignore(field),
"Trying to derive decodable from a struct with ignored fields"
);
true
}

fn is_default_variant_enforce_valid(variant: &Variant) -> bool {
let is_default = variant
.attrs
Expand Down Expand Up @@ -53,9 +38,9 @@ fn is_default_variant_enforce_valid(variant: &Variant) -> bool {
is_default
}

// TODO: use encodable attr for everything: #[encodable(ignore)],
// #[encodable(index = 42)], …
#[proc_macro_derive(Encodable, attributes(encodable_ignore, encodable_default, encodable))]
// TODO: use encodable attr for everything: #[encodable(index = 42)],
// #[encodable(default)], …
#[proc_macro_derive(Encodable, attributes(encodable_default, encodable))]
pub fn derive_encodable(input: TokenStream) -> TokenStream {
let DeriveInput {
ident,
Expand Down Expand Up @@ -88,7 +73,6 @@ fn derive_struct_encode(fields: &Fields) -> TokenStream2 {
let field_names = fields
.iter()
.enumerate()
.filter(|(_, f)| do_not_ignore(f))
.map(|(idx, _)| Index::from(idx))
.collect::<Vec<_>>();
quote! {
Expand All @@ -100,7 +84,6 @@ fn derive_struct_encode(fields: &Fields) -> TokenStream2 {
// Named struct
let field_names = fields
.iter()
.filter(|f| do_not_ignore(f))
.map(|field| field.ident.clone().unwrap())
.collect::<Vec<_>>();
quote! {
Expand Down Expand Up @@ -193,7 +176,6 @@ fn derive_enum_encode(ident: &Ident, variants: &Punctuated<Variant, Comma>) -> T
.fields
.iter()
.enumerate()
.filter(|(_, f)| do_not_ignore(f))
.map(|(idx, _)| format_ident!("bound_{}", idx))
.collect::<Vec<_>>();
let variant_encode_block =
Expand All @@ -207,7 +189,6 @@ fn derive_enum_encode(ident: &Ident, variants: &Punctuated<Variant, Comma>) -> T
let variant_fields = variant
.fields
.iter()
.filter(|f| do_not_ignore(f))
.map(|field| field.ident.clone().unwrap())
.collect::<Vec<_>>();
let variant_encode_block =
Expand Down Expand Up @@ -410,7 +391,6 @@ fn derive_tuple_decode_block(
) -> TokenStream2 {
let field_names = fields
.iter()
.filter(|f| panic_if_ignored(f))
.enumerate()
.map(|(idx, _)| format_ident!("field_{}", idx))
.collect::<Vec<_>>();
Expand Down Expand Up @@ -438,7 +418,6 @@ fn derive_named_decode_block(
) -> TokenStream2 {
let variant_fields = fields
.iter()
.filter(|f| panic_if_ignored(f))
.map(|field| field.ident.clone().unwrap())
.collect::<Vec<_>>();
quote! {
Expand Down

0 comments on commit 24ff267

Please sign in to comment.