diff --git a/src/natu/natu.rs b/src/natu/natu.rs index bc84de2..37c2dd6 100644 --- a/src/natu/natu.rs +++ b/src/natu/natu.rs @@ -40,14 +40,25 @@ impl std::fmt::Display for Report { file.path.display() )?; - for finding in self.diagnostics.iter().filter(|candidate| { - candidate.file_id == diagnostic.file_id - && candidate.finding.rule_id == "let_order" - }) { + let mut findings = self + .diagnostics + .iter() + .filter(|candidate| { + candidate.file_id == diagnostic.file_id + && candidate.finding.rule_id == "let_order" + }) + .collect::>(); + findings.sort_by_key(|finding| finding.finding.range.start); + + for finding in findings { let (start, _) = line_range(&file.source, finding.finding.range); let expected_order = finding.finding.expected_order.as_ref().expect("let order"); - writeln!(formatter, " line {start}: {}", expected_order.join(", "))?; + writeln!( + formatter, + " bindings starting at line {start}: {}", + expected_order.join(", ") + )?; } continue; diff --git a/src/natu/natu_test.rs b/src/natu/natu_test.rs index 87b3c3d..e63fc54 100644 --- a/src/natu/natu_test.rs +++ b/src/natu/natu_test.rs @@ -58,8 +58,8 @@ fn natu_reports_out_of_order_let_bindings() -> googletest::Result<()> { "testdata/lint_findings.nix:12 [manual_inherit_from] Use `inherit` for this selected attribute\n", "testdata/lint_findings.nix:13 [unquoted_uri] URI literals should be quoted\n", "testdata/lint_findings.nix [let_order] Let bindings must follow dependency order\n", - " line 5: nestedSecond, nestedFirst\n", - " line 2: first, second, nested\n", + " bindings starting at line 2: first, second, nested\n", + " bindings starting at line 5: nestedSecond, nestedFirst\n", )) ); Ok(())