diff --git a/crates/bevy_mod_scripting_core/src/reflection_extensions.rs b/crates/bevy_mod_scripting_core/src/reflection_extensions.rs index f7a615e306..f9e7339453 100644 --- a/crates/bevy_mod_scripting_core/src/reflection_extensions.rs +++ b/crates/bevy_mod_scripting_core/src/reflection_extensions.rs @@ -138,10 +138,12 @@ impl PartialReflectExt for T { fn as_option(&self) -> Result, InteropError> { if let bevy::reflect::ReflectRef::Enum(e) = self.reflect_ref() { - if let Some(field) = e.field_at(0) { - return Ok(Some(field)); - } else { - return Ok(None); + if e.is_type(Some("core"), "Option") { + if let Some(field) = e.field_at(0) { + return Ok(Some(field)); + } else { + return Ok(None); + } } } @@ -535,7 +537,13 @@ mod test { #[test] fn test_as_option_none() { + #[derive(Reflect)] + enum Test { + Unit, + } + assert!(None::.as_option().unwrap().is_none()); + assert!(Test::Unit.as_option().is_err()) } #[test]