From eeeed20a11d29b93dddf6718a6bbb93b5376838f Mon Sep 17 00:00:00 2001 From: Yoh Deadfall Date: Sat, 10 Apr 2021 23:55:31 +0200 Subject: [PATCH] Use bevy_reflect as path in case of no direct references Fixes #1814 --- .../bevy_reflect_derive/src/modules.rs | 40 +++++++------------ 1 file changed, 14 insertions(+), 26 deletions(-) diff --git a/crates/bevy_reflect/bevy_reflect_derive/src/modules.rs b/crates/bevy_reflect/bevy_reflect_derive/src/modules.rs index 73335874c05325..62b66dac1eaf08 100644 --- a/crates/bevy_reflect/bevy_reflect_derive/src/modules.rs +++ b/crates/bevy_reflect/bevy_reflect_derive/src/modules.rs @@ -19,40 +19,28 @@ impl Modules { bevy_reflect: "bevy_reflect".to_string(), } } - - pub fn internal() -> Modules { - Modules { - bevy_reflect: "crate".to_string(), - } - } } pub fn get_modules() -> Modules { - let mut manifest = Manifest::new().unwrap(); - // Only look for regular dependencies in the first pass. - manifest.dependencies = Dependencies::Release; - - if let Some(package) = manifest.find(|name| name == "bevy") { - Modules::meta(&package.name) - } else if let Some(package) = manifest.find(|name| name == "bevy_internal") { - Modules::meta(&package.name) - } else if let Some(_package) = manifest.find(|name| name == "bevy_reflect") { - Modules::external() - } else { - // If reflect is not found as a regular dependency, - // try dev-dependencies. - manifest.dependencies = Dependencies::Dev; - + fn find_in_manifest(manifest: &mut Manifest, dependencies: Dependencies) -> Option { + manifest.dependencies = dependencies; if let Some(package) = manifest.find(|name| name == "bevy") { - Modules::meta(&package.name) + Some(Modules::meta(&package.name)) } else if let Some(package) = manifest.find(|name| name == "bevy_internal") { - Modules::meta(&package.name) - } else if let Some(_package) = manifest.find(|name| name == "bevy_reflect") { - Modules::external() + Some(Modules::meta(&package.name)) + } else if let Some(_) = manifest.find(|name| name == "bevy_reflect") { + Some(Modules::external()) } else { - Modules::internal() + None } } + + let mut manifest = Manifest::new().unwrap(); + let modules = find_in_manifest(&mut manifest, Dependencies::Release) + .or_else(|| find_in_manifest(&mut manifest, Dependencies::Dev)) + .unwrap_or_else(|| Modules::external()); + + modules } pub fn get_path(path_str: &str) -> Path {