From 9fa92c9652e26d3ca206f7faccb8faa975eda5aa Mon Sep 17 00:00:00 2001 From: Chandrakana Nandi Date: Tue, 21 May 2024 14:13:55 -0700 Subject: [PATCH] bug fix --- src/compile.rs | 3 +-- src/lib.rs | 2 +- src/main.rs | 5 ++--- src/mutation.rs | 8 ++++---- src/util.rs | 8 ++++++-- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/compile.rs b/src/compile.rs index 0722b1c..d68ca67 100644 --- a/src/compile.rs +++ b/src/compile.rs @@ -1,6 +1,6 @@ -use itertools::join; use crate::invoke_command; use crate::SolAST; +use itertools::join; use serde_json::Value; use std::{ error, @@ -302,7 +302,6 @@ impl Solc { flags.push(ALLOWPATHS.into()); let comma_separated = join(allow_paths, ","); flags.push(comma_separated); - } if let Some(include_path) = &self.include_path { diff --git a/src/lib.rs b/src/lib.rs index b4a2e09..24980a4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -51,7 +51,7 @@ pub fn run_mutate( let outdir = ¶ms.outdir; outdir_map .entry(outdir.clone().unwrap_or(default_gambit_output_directory())) - .or_insert(vec![]) + .or_default() .push(params); } diff --git a/src/main.rs b/src/main.rs index b0e41e0..dc73422 100644 --- a/src/main.rs +++ b/src/main.rs @@ -469,7 +469,7 @@ fn main() -> Result<(), Box> { params.solc_include_path = solc_include_path; params.solc_base_path = solc_basepath; params.solc_remappings = solc_remapping; - + execute_mutation(vec![*params])?; } } @@ -480,13 +480,12 @@ fn main() -> Result<(), Box> { Ok(()) } - /// Execute mutation fn execute_mutation(params: Vec) -> Result<(), Box> { let start = std::time::Instant::now(); let result = run_mutate(params)?; let t = start.elapsed().as_secs_f64(); - let total_num_mutants = result.values().flat_map(|x|x).count(); + let total_num_mutants = result.values().flatten().count(); println!( "Generated {} mutants in {:.2} seconds", total_num_mutants, t diff --git a/src/mutation.rs b/src/mutation.rs index 87270d9..b0163db 100644 --- a/src/mutation.rs +++ b/src/mutation.rs @@ -220,7 +220,7 @@ impl Mutation for MutationType { } } MutationType::SwapArgumentsOperatorMutation => { - let non_comm_ops = vec!["-", "/", "%", "**", ">", "<", ">=", "<=", "<<", ">>"]; + let non_comm_ops = ["-", "/", "%", "**", ">", "<", ">=", "<=", "<<", ">>"]; if let Some(n) = node.node_type() { return n == "BinaryOperation" && non_comm_ops.contains( @@ -282,7 +282,7 @@ impl Mutation for MutationType { let orig = node.operator().unwrap(); let orig = String::from(orig.trim()); - let ops: Vec<&str> = vec!["+", "-", "*", "/", "%", "**"] + let ops: Vec<&str> = ["+", "-", "*", "/", "%", "**"] .iter() .filter(|v| !orig.eq(*v)) .copied() @@ -333,7 +333,7 @@ impl Mutation for MutationType { MutationType::IfStatementMutation => { let cond = node.condition(); let orig = cond.get_text(source.contents()); - let bs: Vec<&str> = vec!["true", "false"] + let bs: Vec<&str> = ["true", "false"] .iter() .filter(|v| !orig.eq(*v)) .copied() @@ -349,7 +349,7 @@ impl Mutation for MutationType { MutationType::RequireMutation => { let arg = &node.arguments()[0]; let orig = arg.get_text(source.contents()); - let bs: Vec<&str> = vec!["true", "false"] + let bs: Vec<&str> = ["true", "false"] .iter() .filter(|v| !orig.eq(*v)) .copied() diff --git a/src/util.rs b/src/util.rs index d15e73c..0b899e4 100644 --- a/src/util.rs +++ b/src/util.rs @@ -95,9 +95,13 @@ pub fn repair_remapping(remap_str: &str, resolve_against: Option<&str>) -> Strin This is rare so we are not handling it for now but this is something to revisit in the future. */ - let left: Vec<&str> = parts[0].split("/").collect(); - let lhs = left[0]; + let lhs = if parts[0].ends_with('/') { + parts[0].rsplit_once('/').unwrap().0 + } else { + parts[0] + }; let rhs = parts[1]; + log::debug!("lhslololol: {lhs} and rhs: {rhs}"); let resolved_path = PathBuf::from(against_path_str) .join(rhs) .canonicalize()