diff --git a/pyo3-macros-backend/src/pyclass.rs b/pyo3-macros-backend/src/pyclass.rs index 3e59a960..52f7c319 100644 --- a/pyo3-macros-backend/src/pyclass.rs +++ b/pyo3-macros-backend/src/pyclass.rs @@ -386,6 +386,9 @@ pub fn build_py_enum( args: PyClassArgs, method_type: PyClassMethodsType, ) -> syn::Result { + if enum_.variants.is_empty() { + bail_spanned!(enum_.brace_token.span => "Empty enums can't be #[pyclass]."); + } let variants: Vec = enum_ .variants .iter() diff --git a/tests/ui/invalid_pyclass_enum.rs b/tests/ui/invalid_pyclass_enum.rs index 62f2a3d6..a12accbf 100644 --- a/tests/ui/invalid_pyclass_enum.rs +++ b/tests/ui/invalid_pyclass_enum.rs @@ -12,4 +12,7 @@ enum NotDrivedClass { y, } +#[pyclass] +enum NoEmptyEnum {} + fn main() {} diff --git a/tests/ui/invalid_pyclass_enum.stderr b/tests/ui/invalid_pyclass_enum.stderr index 2dd0e737..eea36e5c 100644 --- a/tests/ui/invalid_pyclass_enum.stderr +++ b/tests/ui/invalid_pyclass_enum.stderr @@ -9,3 +9,9 @@ error: enums cannot extend from other classes | 9 | #[pyclass(extends = PyList)] | ^^^^^^^ + +error: Empty enums can't be #[pyclass]. + --> tests/ui/invalid_pyclass_enum.rs:16:18 + | +16 | enum NoEmptyEnum {} + | ^^