diff --git a/crates/bevy_scene/macros/src/bsn/parse.rs b/crates/bevy_scene/macros/src/bsn/parse.rs index 818422c4caca4..3d2b8984a06e2 100644 --- a/crates/bevy_scene/macros/src/bsn/parse.rs +++ b/crates/bevy_scene/macros/src/bsn/parse.rs @@ -98,7 +98,7 @@ impl Parse for Bsn { impl BsnEntry { fn parse(input: ParseStream) -> Result { - Ok(if input.peek(Token![:]) { + Ok(if input.peek(Token![:]) && !input.peek(Token![::]) { BsnEntry::CachedScene(BsnScene::parse(input)?) } else if input.peek(Token![#]) { input.parse::()?; diff --git a/crates/bevy_scene/src/lib.rs b/crates/bevy_scene/src/lib.rs index 2d2011cb773cb..5965d11dc1ab0 100644 --- a/crates/bevy_scene/src/lib.rs +++ b/crates/bevy_scene/src/lib.rs @@ -1114,6 +1114,18 @@ mod tests { app } + #[test] + fn supports_fully_qualified_component_paths() { + let mut app = test_app(); + let world = app.world_mut(); + + assert!(world + .spawn_scene(bsn! { + ::bevy_ecs::prelude::Children[] + }) + .is_ok()); + } + #[test] fn cached_patching() { let mut app = test_app();