Skip to content

Commit d58ed67

Browse files
hymmpaul-hansen
andauthored
add position to scene errors (#8065)
# Objective - Fixes #6760 - adds line and position on line info to scene errors ```text Before: 2023-03-12T22:38:59.103220Z WARN bevy_asset::asset_server: encountered an error while loading an asset: Expected closing `)` After: 2023-03-12T22:38:59.103220Z WARN bevy_asset::asset_server: encountered an error while loading an asset: Expected closing `)` at scenes/test/scene.scn.ron:10:4 ``` ## Solution - use span_error to get position info. This is what the ron crate does internally to get the position info. https://github.com/ron-rs/ron/blob/562963f88733cae0e3ca2a128b590817f0346343/src/options.rs#L158 ## Changelog - added line numbers to scene errors --------- Co-authored-by: Paul Hansen <[email protected]>
1 parent e27f38a commit d58ed67

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

crates/bevy_scene/src/scene_loader.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::serde::SceneDeserializer;
2-
use anyhow::Result;
2+
use anyhow::{anyhow, Result};
33
use bevy_app::AppTypeRegistry;
44
use bevy_asset::{AssetLoader, LoadContext, LoadedAsset};
55
use bevy_ecs::world::{FromWorld, World};
@@ -35,7 +35,17 @@ impl AssetLoader for SceneLoader {
3535
let scene_deserializer = SceneDeserializer {
3636
type_registry: &self.type_registry.read(),
3737
};
38-
let scene = scene_deserializer.deserialize(&mut deserializer)?;
38+
let scene = scene_deserializer
39+
.deserialize(&mut deserializer)
40+
.map_err(|e| {
41+
let span_error = deserializer.span_error(e);
42+
anyhow!(
43+
"{} at {}:{}",
44+
span_error.code,
45+
load_context.path().to_string_lossy(),
46+
span_error.position,
47+
)
48+
})?;
3949
load_context.set_default_asset(LoadedAsset::new(scene));
4050
Ok(())
4151
})

0 commit comments

Comments
 (0)