Tweak enum generics error handling
diff --git a/syntax/parse.rs b/syntax/parse.rs
index 8bd8907..acf969d 100644
--- a/syntax/parse.rs
+++ b/syntax/parse.rs
@@ -174,16 +174,15 @@
},
);
- let generics = &item.generics;
- if !generics.params.is_empty() || generics.where_clause.is_some() {
+ if !item.generics.params.is_empty() {
+ let vis = &item.vis;
let enum_token = item.enum_token;
let ident = &item.ident;
- let where_clause = &generics.where_clause;
- let span = quote!(#enum_token #ident #generics #where_clause);
- return Err(Error::new_spanned(
- span,
- "enums with generic parameters are not allowed",
- ));
+ let generics = &item.generics;
+ let span = quote!(#vis #enum_token #ident #generics);
+ cx.error(span, "enum with generic parameters is not supported");
+ } else if let Some(where_clause) = &item.generics.where_clause {
+ cx.error(where_clause, "enum with where-clause is not supported");
}
let mut variants = Vec::new();
diff --git a/tests/ui/generic_enum.rs b/tests/ui/generic_enum.rs
index 808856e..feeb94b 100644
--- a/tests/ui/generic_enum.rs
+++ b/tests/ui/generic_enum.rs
@@ -3,6 +3,14 @@
enum A<T> {
Field,
}
+
+ enum B<T> where T: Copy {
+ Field,
+ }
+
+ enum C where void: Copy {
+ Field,
+ }
}
fn main() {}
diff --git a/tests/ui/generic_enum.stderr b/tests/ui/generic_enum.stderr
index bf267f7..ea83d7c 100644
--- a/tests/ui/generic_enum.stderr
+++ b/tests/ui/generic_enum.stderr
@@ -1,5 +1,17 @@
-error: enums with generic parameters are not allowed
+error: enum with generic parameters is not supported
--> $DIR/generic_enum.rs:3:5
|
3 | enum A<T> {
| ^^^^^^^^^
+
+error: enum with generic parameters is not supported
+ --> $DIR/generic_enum.rs:7:5
+ |
+7 | enum B<T> where T: Copy {
+ | ^^^^^^^^^
+
+error: enum with where-clause is not supported
+ --> $DIR/generic_enum.rs:11:12
+ |
+11 | enum C where void: Copy {
+ | ^^^^^^^^^^^^^^^^