diff options
| author | Valentin Popov <valentin@popov.link> | 2026-06-22 15:41:21 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-06-22 15:41:21 +0300 |
| commit | 8b91a0bfbf0097d145359c8508a61696ade812d1 (patch) | |
| tree | 3e0f3c1c72034b13b73260fca204c101fc7aa379 /crates/fparkan-render/src/lib.rs | |
| parent | fb97405e0c47dadf656e5c92c76ddaff95d78222 (diff) | |
| download | fparkan-8b91a0bfbf0097d145359c8508a61696ade812d1.tar.xz fparkan-8b91a0bfbf0097d145359c8508a61696ade812d1.zip | |
fix: make core error displays actionable
Diffstat (limited to 'crates/fparkan-render/src/lib.rs')
| -rw-r--r-- | crates/fparkan-render/src/lib.rs | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/crates/fparkan-render/src/lib.rs b/crates/fparkan-render/src/lib.rs index a2f18d6..5f6d1da 100644 --- a/crates/fparkan-render/src/lib.rs +++ b/crates/fparkan-render/src/lib.rs @@ -172,7 +172,28 @@ pub enum RenderError { impl std::fmt::Display for RenderError { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{self:?}") + match self { + Self::InvalidRange => write!(f, "render command contains an empty index range"), + Self::InvalidDrawRange { + draw_id, + stable_order, + start, + count, + } => write!( + f, + "draw {} has invalid index range start={} count={} at stable order {}", + draw_id.0, start, count, stable_order + ), + Self::MaterialIndexOutOfBounds { + draw_id, + material_index, + material_count, + } => write!( + f, + "draw {} references material index {} but only {} material slots are available", + draw_id.0, material_index, material_count + ), + } } } @@ -535,6 +556,29 @@ mod tests { } #[test] + fn render_error_display_is_actionable() { + assert_eq!( + RenderError::InvalidDrawRange { + draw_id: DrawId(9), + stable_order: 10, + start: 4, + count: 0 + } + .to_string(), + "draw 9 has invalid index range start=4 count=0 at stable order 10" + ); + assert_eq!( + RenderError::MaterialIndexOutOfBounds { + draw_id: DrawId(7), + material_index: 3, + material_count: 2 + } + .to_string(), + "draw 7 references material index 3 but only 2 material slots are available" + ); + } + + #[test] fn ui_phase_is_excluded_until_requested() -> Result<(), RenderError> { let snapshot = RenderSnapshot { camera: CameraSnapshot::default(), |
