From 979c8b7951557dfc57a59354b01c384186397d09 Mon Sep 17 00:00:00 2001 From: "Arend van Beelen jr." Date: Thu, 28 Mar 2024 09:52:58 +0100 Subject: [PATCH] Move binding_is_suppressed() unto Binding --- crates/core/src/pattern/state.rs | 4 +-- crates/core/src/suppress.rs | 62 ++++++++++++++++---------------- crates/core/src/text_unparser.rs | 5 ++- 3 files changed, 36 insertions(+), 35 deletions(-) diff --git a/crates/core/src/pattern/state.rs b/crates/core/src/pattern/state.rs index b6d126cb0..f98d8ae2f 100644 --- a/crates/core/src/pattern/state.rs +++ b/crates/core/src/pattern/state.rs @@ -5,7 +5,6 @@ use std::ops::Range as StdRange; use super::compiler::MATCH_VAR; use super::FileOwner; use crate::intervals::{earliest_deadline_sort, get_top_level_intervals_in_range, Interval}; -use crate::suppress::is_binding_suppressed; use anyhow::{anyhow, Result}; use anyhow::{bail, Ok}; use im::{vector, Vector}; @@ -246,7 +245,8 @@ impl<'a> State<'a> { if let ResolvedPattern::Binding(bindings) = value { for binding in bindings.iter() { bindings_count += 1; - if is_binding_suppressed(binding, lang, current_name) + if binding + .is_suppressed(lang, current_name) .unwrap_or_default() { suppressed_count += 1; diff --git a/crates/core/src/suppress.rs b/crates/core/src/suppress.rs index 6b30ccf81..519f87929 100644 --- a/crates/core/src/suppress.rs +++ b/crates/core/src/suppress.rs @@ -8,39 +8,41 @@ use crate::binding::Binding; use crate::resolve; use anyhow::Result; -pub(crate) fn is_binding_suppressed( - binding: &Binding, - lang: &impl Language, - current_name: Option<&str>, -) -> Result { - let (src, node) = match binding { - Binding::Node(src, node) => (src, node), - Binding::String(_, _) => return Ok(false), - Binding::List(src, node, _) => (src, node), - Binding::Empty(src, node, _) => (src, node), - Binding::FileName(_) => return Ok(false), - Binding::ConstantRef(_) => return Ok(false), - }; - let target_range = node.range(); - for n in - node.children(&mut node.walk()) - .chain(ParentTraverse::new(TreeSitterParentCursor::new( - node.clone(), - ))) - { - let mut cursor = n.walk(); - let children = n.children(&mut cursor); - for c in children { - if !(lang.is_comment(c.kind_id()) || lang.is_comment_wrapper(&c)) { - continue; - } - if is_suppress_comment(&c, src, &target_range, current_name, lang)? { - return Ok(true); +impl<'a> Binding<'a> { + pub(crate) fn is_suppressed( + &self, + lang: &impl Language, + current_name: Option<&str>, + ) -> Result { + let (src, node) = match self { + Self::Node(src, node) => (src, node), + Self::String(_, _) => return Ok(false), + Self::List(src, node, _) => (src, node), + Self::Empty(src, node, _) => (src, node), + Self::FileName(_) => return Ok(false), + Self::ConstantRef(_) => return Ok(false), + }; + let target_range = node.range(); + for n in + node.children(&mut node.walk()) + .chain(ParentTraverse::new(TreeSitterParentCursor::new( + node.clone(), + ))) + { + let mut cursor = n.walk(); + let children = n.children(&mut cursor); + for c in children { + if !(lang.is_comment(c.kind_id()) || lang.is_comment_wrapper(&c)) { + continue; + } + if is_suppress_comment(&c, src, &target_range, current_name, lang)? { + return Ok(true); + } } } - } - Ok(false) + Ok(false) + } } fn is_suppress_comment( diff --git a/crates/core/src/text_unparser.rs b/crates/core/src/text_unparser.rs index b9429cf1f..a8a52222e 100644 --- a/crates/core/src/text_unparser.rs +++ b/crates/core/src/text_unparser.rs @@ -2,7 +2,6 @@ use crate::binding::{linearize_binding, Binding}; use crate::pattern::resolved_pattern::CodeRange; use crate::pattern::state::FileRegistry; use crate::pattern::Effect; -use crate::suppress::is_binding_suppressed; use anyhow::Result; use im::Vector; use marzano_language::target_language::TargetLanguage; @@ -28,9 +27,9 @@ pub(crate) fn apply_effects<'a>( current_name: Option<&str>, logs: &mut AnalysisLogs, ) -> Result<(String, Option>>)> { - let mut our_effects = Vec::new(); + let mut our_effects = Vec::with_capacity(effects.len()); for effect in effects { - let disabled = is_binding_suppressed(&effect.binding, language, current_name)?; + let disabled = effect.binding.is_suppressed(language, current_name)?; if !disabled { our_effects.push(effect); }