Merge pull request #2018 from b05902132/derive-enum

Let #[pyclass] reject empty enums.
This commit is contained in:
David Hewitt 2021-11-22 18:58:31 +00:00 committed by GitHub
commit af27fd373b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 0 deletions

View File

@ -386,6 +386,9 @@ pub fn build_py_enum(
args: PyClassArgs, args: PyClassArgs,
method_type: PyClassMethodsType, method_type: PyClassMethodsType,
) -> syn::Result<TokenStream> { ) -> syn::Result<TokenStream> {
if enum_.variants.is_empty() {
bail_spanned!(enum_.brace_token.span => "Empty enums can't be #[pyclass].");
}
let variants: Vec<PyClassEnumVariant> = enum_ let variants: Vec<PyClassEnumVariant> = enum_
.variants .variants
.iter() .iter()

View File

@ -12,4 +12,7 @@ enum NotDrivedClass {
y, y,
} }
#[pyclass]
enum NoEmptyEnum {}
fn main() {} fn main() {}

View File

@ -9,3 +9,9 @@ error: enums cannot extend from other classes
| |
9 | #[pyclass(extends = PyList)] 9 | #[pyclass(extends = PyList)]
| ^^^^^^^ | ^^^^^^^
error: Empty enums can't be #[pyclass].
--> tests/ui/invalid_pyclass_enum.rs:16:18
|
16 | enum NoEmptyEnum {}
| ^^