Skip to content

Commit 7ffe4b2

Browse files
committed
fix: Add None case for finding max line number
- Line number width is 1 if max line number is 0 - Line number witdh is 0 if max line number is None - Update test_line_number_0 in tests/formatter.rs to reflect new behavior - Fix issue #57 Running tests/formatter.rs (target/debug/deps/formatter-d39ddd6093209828) running 40 tests ... test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
1 parent 1493701 commit 7ffe4b2

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

Diff for: src/renderer/display_list.rs

+7-8
Original file line numberDiff line numberDiff line change
@@ -72,18 +72,17 @@ impl<'a> fmt::Debug for DisplayList<'a> {
7272

7373
impl<'a> Display for DisplayList<'a> {
7474
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
75-
let lineno_width = self.body.iter().fold(0, |max, set| {
75+
let lineno_width = self.body.iter().fold(None, |max, set| {
7676
set.display_lines.iter().fold(max, |max, line| match line {
77-
DisplayLine::Source { lineno, .. } => cmp::max(lineno.unwrap_or(0), max),
77+
DisplayLine::Source { lineno, .. } => std::cmp::max(max, *lineno),
7878
_ => max,
7979
})
8080
});
81-
let lineno_width = if lineno_width == 0 {
82-
lineno_width
83-
} else if self.anonymized_line_numbers {
84-
ANONYMIZED_LINE_NUM.len()
85-
} else {
86-
((lineno_width as f64).log10().floor() as usize) + 1
81+
let lineno_width = match lineno_width {
82+
None => 0,
83+
Some(_max) if self.anonymized_line_numbers => ANONYMIZED_LINE_NUM.len(),
84+
Some(0) => 1,
85+
Some(max) => (max as f64).log10().floor() as usize + 1,
8786
};
8887

8988
let multiline_depth = self.body.iter().fold(0, |max, set| {

0 commit comments

Comments
 (0)