mirror of
https://github.com/bevyengine/bevy
synced 2024-11-22 12:43:34 +00:00
diagnostics: meaningful error when graph node has wrong number of inputs (#4924)
# Objective Currently, providing the wrong number of inputs to a render graph node triggers this assertion: ``` thread 'main' panicked at 'assertion failed: `(left == right)` left: `1`, right: `2`', /[redacted]/bevy/crates/bevy_render/src/renderer/graph_runner.rs:164:13 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace ``` This does not provide the user any context. ## Solution Add a new `RenderGraphRunnerError` variant to handle this case. The new message looks like this: ``` ERROR bevy_render::renderer: Error running render graph: ERROR bevy_render::renderer: > node (name: 'Some("outline_pass")') has 2 input slots, but was provided 1 values ``` --- ## Changelog ### Changed `RenderGraphRunnerError` now has a new variant, `MismatchedInputCount`. ## Migration Guide Exhaustive matches on `RenderGraphRunnerError` will need to add a branch to handle the new `MismatchedInputCount` variant.
This commit is contained in:
parent
c4080c6832
commit
b47291264b
1 changed files with 15 additions and 1 deletions
|
@ -41,6 +41,14 @@ pub enum RenderGraphRunnerError {
|
|||
expected: SlotType,
|
||||
actual: SlotType,
|
||||
},
|
||||
#[error(
|
||||
"node (name: '{node_name:?}') has {slot_count} input slots, but was provided {value_count} values"
|
||||
)]
|
||||
MismatchedInputCount {
|
||||
node_name: Option<Cow<'static, str>>,
|
||||
slot_count: usize,
|
||||
value_count: usize,
|
||||
},
|
||||
}
|
||||
|
||||
impl RenderGraphRunner {
|
||||
|
@ -161,7 +169,13 @@ impl RenderGraphRunner {
|
|||
.map(|(_, value)| value)
|
||||
.collect();
|
||||
|
||||
assert_eq!(inputs.len(), node_state.input_slots.len());
|
||||
if inputs.len() != node_state.input_slots.len() {
|
||||
return Err(RenderGraphRunnerError::MismatchedInputCount {
|
||||
node_name: node_state.name.clone(),
|
||||
slot_count: node_state.input_slots.len(),
|
||||
value_count: inputs.len(),
|
||||
});
|
||||
}
|
||||
|
||||
let mut outputs: SmallVec<[Option<SlotValue>; 4]> =
|
||||
smallvec![None; node_state.output_slots.len()];
|
||||
|
|
Loading…
Reference in a new issue