Hmbown/CodeWhale · error
code rows are never empty
Error message
code rows are never empty
What it means
render_wrapped_code_spans_tagged seeds rows with one empty Vec and only pushes additional rows, never popping, so at least one row always exists when it finishes wrapping code-span graphemes. The expect fires only if row-initialization logic regressed and all rows were drained — an internal rendering invariant, independent of input span content.
Source
Thrown at crates/tui/src/tui/markdown_render.rs:1280
fn render_wrapped_code_spans_tagged(
spans: Vec<Span<'static>>,
width: usize,
) -> Vec<RenderedMarkdownLine> {
let prefix = " ";
let prefix_width = prefix.width();
let available = width.saturating_sub(prefix_width).max(1);
let mut rows: Vec<Vec<(String, Style)>> = vec![Vec::new()];
let mut current_width = 0usize;
for span in spans {
for grapheme in span.content.graphemes(true) {
let grapheme_width = markdown_grapheme_width(grapheme, current_width);
if current_width + grapheme_width > available && current_width > 0 {
rows.push(Vec::new());
current_width = 0;
}
let row = rows.last_mut().expect("code rows are never empty");
if let Some((text, style)) = row.last_mut()
&& *style == span.style
{
text.push_str(grapheme);
} else {
row.push((grapheme.to_string(), span.style));
}
current_width += markdown_grapheme_width(grapheme, current_width);
}
}
let last_index = rows.len().saturating_sub(1);
rows.into_iter()
.enumerate()
.map(|(idx, row)| {
let mut rendered = vec![Span::raw(prefix)];
rendered.extend(
row.into_iter()View on GitHub (pinned to 0c42157ee5)
Solutions
- Keep the vec![Vec::new()] seed; append rows instead of replacing the vector
- If empty input should yield zero rows, change the function to return Option rather than expecting
- Add a test for empty spans producing exactly one (empty) row
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at crates/tui/src/tui/markdown_render.rs:1280 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20).
Data as JSON: /api/errors/73ba84b729ab6354.
Report an issue: GitHub.