Touch up PR 170
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index 788a156..472c079 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -128,16 +128,12 @@
let ident = &enm.ident;
let doc = &enm.doc;
let variants = enm.variants.iter().scan(0, |next_discriminant, variant| {
- // This span on the pub makes "private type in public interface" errors
- // appear in the right place.
- let vis = Token);
let variant_ident = &variant.ident;
- let discriminant = match variant.discriminant {
- None => *next_discriminant,
- Some(val) => val,
- };
+ let discriminant = variant.discriminant.unwrap_or(*next_discriminant);
*next_discriminant = discriminant + 1;
- Some(quote!( #vis const #variant_ident: Self = #ident(#discriminant)))
+ Some(quote! {
+ pub const #variant_ident: Self = #ident(#discriminant);
+ })
});
quote! {
#doc
@@ -147,7 +143,7 @@
#[allow(non_upper_case_globals)]
impl #ident {
- #(#variants;)*
+ #(#variants)*
}
}
}
diff --git a/syntax/check.rs b/syntax/check.rs
index 321fb1a..7ddcea3 100644
--- a/syntax/check.rs
+++ b/syntax/check.rs
@@ -202,10 +202,7 @@
let mut discriminants = HashSet::new();
enm.variants.iter().fold(0, |next_discriminant, variant| {
- let discriminant = match variant.discriminant {
- None => next_discriminant,
- Some(val) => val,
- };
+ let discriminant = variant.discriminant.unwrap_or(next_discriminant);
if !discriminants.insert(discriminant) {
let msg = format!("discriminant value `{}` already exists", discriminant);
cx.error(span_for_enum_error(enm), msg);
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 995b21f..a0dddbd 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -96,8 +96,7 @@
));
}
- let mut doc = Doc::new();
- attrs::parse(&item.attrs, &mut doc, None)?;
+ let doc = attrs::parse_doc(&item.attrs)?;
for variant in &item.variants {
match &variant.fields {
@@ -105,7 +104,7 @@
_ => {
return Err(Error::new_spanned(
variant,
- "enums with data are not allowed",
+ "enums with data are not supported yet",
))
}
}
@@ -135,7 +134,7 @@
Expr::Lit(ExprLit {
lit: Lit::Int(n), ..
}),
- )) => match n.base10_digits().parse() {
+ )) => match n.base10_parse() {
Ok(val) => Ok(Variant {
ident: variant.ident,
discriminant: Some(val),
@@ -147,7 +146,7 @@
},
_ => Err(Error::new_spanned(
variant,
- "enums with non-integer literal discriminants are not supported",
+ "enums with non-integer literal discriminants are not supported yet",
)),
}
}
diff --git a/tests/ui/data_enums.stderr b/tests/ui/data_enums.stderr
index 118514e..c78bce5 100644
--- a/tests/ui/data_enums.stderr
+++ b/tests/ui/data_enums.stderr
@@ -1,4 +1,4 @@
-error: enums with data are not allowed
+error: enums with data are not supported yet
--> $DIR/data_enums.rs:4:9
|
4 | Field(u64),
diff --git a/tests/ui/non_integer_discriminant_enum.stderr b/tests/ui/non_integer_discriminant_enum.stderr
index 7f70f25..926fd90 100644
--- a/tests/ui/non_integer_discriminant_enum.stderr
+++ b/tests/ui/non_integer_discriminant_enum.stderr
@@ -1,4 +1,4 @@
-error: enums with non-integer literal discriminants are not supported
+error: enums with non-integer literal discriminants are not supported yet
--> $DIR/non_integer_discriminant_enum.rs:4:9
|
4 | Field = 2020 + 1,