Skip to content

Commit babe8c1

Browse files
committed
Fail for unnamed or unit enum variants
1 parent 15ba3b8 commit babe8c1

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/lib.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@ use std::collections::BTreeSet;
22

33
use proc_macro::TokenStream;
44
use proc_macro2::{Literal, TokenStream as TokenStream2};
5-
use quote::{quote, ToTokens};
5+
use quote::{ToTokens, quote};
66
use syn::{
7-
braced,
7+
Data, DeriveInput, Fields, Ident, ItemEnum, ItemStruct, Token, Type, Variant, braced,
88
parse::{Parse, ParseStream},
99
parse_macro_input,
1010
punctuated::Punctuated,
11-
Data, DeriveInput, Fields, Ident, ItemEnum, ItemStruct, Token, Type, Variant,
1211
};
1312

1413
fn extract_enum_variants(input: &DeriveInput) -> syn::Result<Vec<(&syn::Ident, &syn::Type)>> {
@@ -330,6 +329,11 @@ pub fn common_fields(attr: TokenStream, item: TokenStream) -> TokenStream {
330329
for field in common_fields.iter() {
331330
fields.named.push(field.clone());
332331
}
332+
} else {
333+
let error_lit = Literal::string("Expected named variants in enum");
334+
return TokenStream::from(quote! {
335+
compile_error!(#error_lit);
336+
});
333337
}
334338
}
335339

0 commit comments

Comments
 (0)