Skip to content

Commit d1ab5d1

Browse files
Fix/release builds (#1812)
Signed-off-by: salaheldinsoliman <salaheldin_sameh@aucegypt.edu> Signed-off-by: Sean Young <sean@mess.org> Co-authored-by: Sean Young <sean@mess.org>
1 parent f6307ae commit d1ab5d1

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

fmt/src/buffer.rs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,15 @@ impl<W> FormatBuffer<W> {
9494
.extend(std::iter::repeat_n(IndentGroup::default(), delta));
9595
}
9696

97-
/// Dedent the buffer by delta
97+
/// Dedent the buffer by `delta` levels. Panics if `delta` is too large.
9898
pub fn dedent(&mut self, delta: usize) {
99+
if delta > self.indents.len() {
100+
panic!(
101+
"Cannot dedent by {} levels: only {} levels present",
102+
delta,
103+
self.indents.len()
104+
);
105+
}
99106
self.indents.truncate(self.indents.len() - delta);
100107
}
101108

@@ -336,11 +343,12 @@ impl<W: Write> Write for FormatBuffer<W> {
336343
#[cfg(test)]
337344
mod tests {
338345
use super::*;
346+
use std::panic::{catch_unwind, AssertUnwindSafe};
339347

340348
const TAB_WIDTH: usize = 4;
341349

342350
#[test]
343-
fn test_buffer_indents() -> std::fmt::Result {
351+
fn test_buffer_indents() {
344352
let delta = 1;
345353

346354
let mut buf = FormatBuffer::new(String::new(), TAB_WIDTH);
@@ -366,11 +374,12 @@ mod tests {
366374
assert_eq!(buf.level(), 0);
367375
assert_eq!(buf.current_indent_len(), 0);
368376

369-
// panics on extra dedent
370-
let res = std::panic::catch_unwind(|| buf.clone().dedent(delta));
371-
assert!(res.is_err());
372-
373-
Ok(())
377+
// should panic on extra dedent
378+
let res = catch_unwind(AssertUnwindSafe(|| {
379+
let mut buf = buf.clone();
380+
buf.dedent(delta);
381+
}));
382+
assert!(res.is_err(), "Expected panic on extra dedent, but did not get one");
374383
}
375384

376385
#[test]

0 commit comments

Comments
 (0)