From d1ff222bcf94152cd657233cffd8c14a45788c26 Mon Sep 17 00:00:00 2001 From: Akshay Date: Wed, 29 Dec 2021 10:53:38 +0530 Subject: allow for version based lints --- bin/src/fix/all.rs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'bin/src/fix/all.rs') diff --git a/bin/src/fix/all.rs b/bin/src/fix/all.rs index 7e51d16..d7f7fff 100644 --- a/bin/src/fix/all.rs +++ b/bin/src/fix/all.rs @@ -1,6 +1,6 @@ use std::borrow::Cow; -use lib::Report; +use lib::{session::SessionInfo, Report}; use rnix::{parser::ParseError as RnixParseErr, WalkEvent}; use crate::{ @@ -8,7 +8,11 @@ use crate::{ LintMap, }; -fn collect_fixes(source: &str, lints: &LintMap) -> Result, RnixParseErr> { +fn collect_fixes( + source: &str, + lints: &LintMap, + sess: &SessionInfo, +) -> Result, RnixParseErr> { let parsed = rnix::parse(source).as_result()?; Ok(parsed @@ -18,7 +22,7 @@ fn collect_fixes(source: &str, lints: &LintMap) -> Result, RnixParse WalkEvent::Enter(child) => lints.get(&child.kind()).map(|rules| { rules .iter() - .filter_map(|rule| rule.validate(&child)) + .filter_map(|rule| rule.validate(&child, sess)) .filter(|report| report.total_suggestion_range().is_some()) .collect::>() }), @@ -57,7 +61,7 @@ fn reorder(mut reports: Vec) -> Vec { impl<'a> Iterator for FixResult<'a> { type Item = FixResult<'a>; fn next(&mut self) -> Option { - let all_reports = collect_fixes(&self.src, self.lints).ok()?; + let all_reports = collect_fixes(&self.src, self.lints, &self.sess).ok()?; if all_reports.is_empty() { return None; } @@ -78,13 +82,18 @@ impl<'a> Iterator for FixResult<'a> { src: self.src.clone(), fixed, lints: self.lints, + sess: self.sess, }) } } -pub fn all_with<'a>(src: &'a str, lints: &'a LintMap) -> Option> { +pub fn all_with<'a>( + src: &'a str, + lints: &'a LintMap, + sess: &'a SessionInfo, +) -> Option> { let src = Cow::from(src); let _ = rnix::parse(&src).as_result().ok()?; - let initial = FixResult::empty(src, lints); + let initial = FixResult::empty(src, lints, sess); initial.into_iter().last() } -- cgit v1.2.3