From a2a387c7332f568fcc27186578254f6923994742 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Kr=C3=BCger?= Date: Fri, 21 Aug 2020 22:02:42 +0200 Subject: [PATCH] compiletest: fix a couple clippy lint findings --- src/tools/compiletest/src/errors.rs | 2 +- src/tools/compiletest/src/header.rs | 18 ++++------ src/tools/compiletest/src/json.rs | 2 +- src/tools/compiletest/src/main.rs | 40 ++++++++++------------ src/tools/compiletest/src/runtest.rs | 51 ++++++++++++++-------------- src/tools/compiletest/src/util.rs | 18 +++++----- 6 files changed, 59 insertions(+), 72 deletions(-) diff --git a/src/tools/compiletest/src/errors.rs b/src/tools/compiletest/src/errors.rs index 8edc9c9cd03..054235ec16d 100644 --- a/src/tools/compiletest/src/errors.rs +++ b/src/tools/compiletest/src/errors.rs @@ -148,7 +148,7 @@ fn parse_expected( // If we find `//~ ERROR foo` or something like that, skip the first word. let kind = first_word.parse::().ok(); - if let Some(_) = kind { + if kind.is_some() { msg = &msg.trim_start().split_at(first_word.len()).1; } diff --git a/src/tools/compiletest/src/header.rs b/src/tools/compiletest/src/header.rs index 90a0d8926ad..0efa668ecc8 100644 --- a/src/tools/compiletest/src/header.rs +++ b/src/tools/compiletest/src/header.rs @@ -173,10 +173,8 @@ impl EarlyProps { // Ignore if actual version is smaller the minimum required // version actual_version < min_version - } else if line.starts_with("rust-lldb") && !config.lldb_native_rust { - true } else { - false + line.starts_with("rust-lldb") && !config.lldb_native_rust } } else { false @@ -657,7 +655,6 @@ fn iter_header(testfile: &Path, cfg: Option<&str>, rdr: R, it: &mut dyn it(ln[comment.len()..].trim_start()); } } - return; } impl Config { @@ -819,7 +816,7 @@ impl Config { let name = line[prefix.len() + 1..].split(&[':', ' '][..]).next().unwrap(); let is_match = name == "test" || - &self.target == name || // triple + self.target == name || // triple util::matches_os(&self.target, name) || // target util::matches_env(&self.target, name) || // env self.target.ends_with(name) || // target and env @@ -857,10 +854,7 @@ impl Config { // Ensure the directive is a whole word. Do not match "ignore-x86" when // the line says "ignore-x86_64". line.starts_with(directive) - && match line.as_bytes().get(directive.len()) { - None | Some(&b' ') | Some(&b':') => true, - _ => false, - } + && matches!(line.as_bytes().get(directive.len()), None | Some(&b' ') | Some(&b':')) } pub fn parse_name_value_directive(&self, line: &str, directive: &str) -> Option { @@ -901,9 +895,9 @@ impl Config { } fn expand_variables(mut value: String, config: &Config) -> String { - const CWD: &'static str = "{{cwd}}"; - const SRC_BASE: &'static str = "{{src-base}}"; - const BUILD_BASE: &'static str = "{{build-base}}"; + const CWD: &str = "{{cwd}}"; + const SRC_BASE: &str = "{{src-base}}"; + const BUILD_BASE: &str = "{{build-base}}"; if value.contains(CWD) { let cwd = env::current_dir().unwrap(); diff --git a/src/tools/compiletest/src/json.rs b/src/tools/compiletest/src/json.rs index 6ac7c3b9b47..6a03a76c566 100644 --- a/src/tools/compiletest/src/json.rs +++ b/src/tools/compiletest/src/json.rs @@ -75,7 +75,7 @@ pub fn extract_rendered(output: &str) -> String { if line.starts_with('{') { if let Ok(diagnostic) = serde_json::from_str::(line) { diagnostic.rendered - } else if let Ok(_) = serde_json::from_str::(line) { + } else if serde_json::from_str::(line).is_ok() { // Ignore the notification. None } else { diff --git a/src/tools/compiletest/src/main.rs b/src/tools/compiletest/src/main.rs index 46e16393a24..adf2fa7fd8e 100644 --- a/src/tools/compiletest/src/main.rs +++ b/src/tools/compiletest/src/main.rs @@ -240,7 +240,7 @@ pub fn parse_config(args: Vec) -> Config { cc: matches.opt_str("cc").unwrap(), cxx: matches.opt_str("cxx").unwrap(), cflags: matches.opt_str("cflags").unwrap(), - ar: matches.opt_str("ar").unwrap_or("ar".into()), + ar: matches.opt_str("ar").unwrap_or_else(|| String::from("ar")), linker: matches.opt_str("linker"), llvm_components: matches.opt_str("llvm-components").unwrap(), nodejs: matches.opt_str("nodejs"), @@ -361,17 +361,13 @@ pub fn run_tests(config: Config) { } fn configure_cdb(config: &Config) -> Option { - if config.cdb.is_none() { - return None; - } + config.cdb.as_ref()?; Some(Config { debugger: Some(Debugger::Cdb), ..config.clone() }) } fn configure_gdb(config: &Config) -> Option { - if config.gdb_version.is_none() { - return None; - } + config.gdb_version?; if util::matches_env(&config.target, "msvc") { return None; @@ -405,9 +401,7 @@ fn configure_gdb(config: &Config) -> Option { } fn configure_lldb(config: &Config) -> Option { - if config.lldb_python_dir.is_none() { - return None; - } + config.lldb_python_dir.as_ref()?; if let Some(350) = config.lldb_version { println!( @@ -455,7 +449,7 @@ pub fn make_tests(config: &Config, tests: &mut Vec) { debug!("making tests from {:?}", config.src_base.display()); let inputs = common_inputs_stamp(config); collect_tests_from_dir(config, &config.src_base, &PathBuf::new(), &inputs, tests) - .expect(&format!("Could not read tests from {}", config.src_base.display())); + .unwrap_or_else(|_| panic!("Could not read tests from {}", config.src_base.display())); } /// Returns a stamp constructed from input files common to all test cases. @@ -588,7 +582,7 @@ fn make_test(config: &Config, testpaths: &TestPaths, inputs: &Stamp) -> Vec bool { - match &target[..] { - "arm-linux-androideabi" | "armv7-linux-androideabi" | "aarch64-linux-android" => true, - _ => false, - } +fn is_android_gdb_target(target: &str) -> bool { + matches!( + &target[..], + "arm-linux-androideabi" | "armv7-linux-androideabi" | "aarch64-linux-android" + ) } /// Returns `true` if the given target is a MSVC target for the purpouses of CDB testing. -fn is_pc_windows_msvc_target(target: &String) -> bool { +fn is_pc_windows_msvc_target(target: &str) -> bool { target.ends_with("-pc-windows-msvc") } -fn find_cdb(target: &String) -> Option { +fn find_cdb(target: &str) -> Option { if !(cfg!(windows) && is_pc_windows_msvc_target(target)) { return None; } - let pf86 = env::var_os("ProgramFiles(x86)").or(env::var_os("ProgramFiles"))?; + let pf86 = env::var_os("ProgramFiles(x86)").or_else(|| env::var_os("ProgramFiles"))?; let cdb_arch = if cfg!(target_arch = "x86") { "x86" } else if cfg!(target_arch = "x86_64") { @@ -779,14 +773,14 @@ fn find_cdb(target: &String) -> Option { } /// Returns Path to CDB -fn analyze_cdb(cdb: Option, target: &String) -> Option { - cdb.map(|s| OsString::from(s)).or(find_cdb(target)) +fn analyze_cdb(cdb: Option, target: &str) -> Option { + cdb.map(OsString::from).or_else(|| find_cdb(target)) } /// Returns (Path to GDB, GDB Version, GDB has Rust Support) fn analyze_gdb( gdb: Option, - target: &String, + target: &str, android_cross_path: &PathBuf, ) -> (Option, Option, bool) { #[cfg(not(windows))] diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index 8318a0a5ad0..124a9adcab9 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -114,7 +114,7 @@ pub struct Mismatch { impl Mismatch { fn new(line_number: u32) -> Mismatch { - Mismatch { line_number: line_number, lines: Vec::new() } + Mismatch { line_number, lines: Vec::new() } } } @@ -199,7 +199,7 @@ fn write_diff(expected: &str, actual: &str, context_size: usize) -> String { } } } - writeln!(output, "").unwrap(); + writeln!(output).unwrap(); } output } @@ -230,7 +230,7 @@ pub fn run(config: Config, testpaths: &TestPaths, revision: Option<&str>) { debug!("running {:?}", testpaths.file.display()); let props = TestProps::from_file(&testpaths.file, revision, &config); - let cx = TestCx { config: &config, props: &props, testpaths, revision: revision }; + let cx = TestCx { config: &config, props: &props, testpaths, revision }; create_dir_all(&cx.output_base_dir()).unwrap(); if config.mode == Incremental { @@ -578,8 +578,8 @@ impl<'test> TestCx<'test> { if self.props.pp_exact.is_some() { // Now we have to care about line endings let cr = "\r".to_owned(); - actual = actual.replace(&cr, "").to_owned(); - expected = expected.replace(&cr, "").to_owned(); + actual = actual.replace(&cr, ""); + expected = expected.replace(&cr, ""); } self.compare_source(&expected, &actual); @@ -740,7 +740,7 @@ impl<'test> TestCx<'test> { let exe_file = self.make_exe_name(); let prefixes = { - static PREFIXES: &'static [&'static str] = &["cdb", "cdbg"]; + static PREFIXES: &[&str] = &["cdb", "cdbg"]; // No "native rust support" variation for CDB yet. PREFIXES }; @@ -811,12 +811,12 @@ impl<'test> TestCx<'test> { fn run_debuginfo_gdb_test_no_opt(&self) { let prefixes = if self.config.gdb_native_rust { // GDB with Rust - static PREFIXES: &'static [&'static str] = &["gdb", "gdbr"]; + static PREFIXES: &[&str] = &["gdb", "gdbr"]; println!("NOTE: compiletest thinks it is using GDB with native rust support"); PREFIXES } else { // Generic GDB - static PREFIXES: &'static [&'static str] = &["gdb", "gdbg"]; + static PREFIXES: &[&str] = &["gdb", "gdbg"]; println!("NOTE: compiletest thinks it is using GDB without native rust support"); PREFIXES }; @@ -875,12 +875,12 @@ impl<'test> TestCx<'test> { .arg(&exe_file) .arg(&self.config.adb_test_dir) .status() - .expect(&format!("failed to exec `{:?}`", adb_path)); + .unwrap_or_else(|_| panic!("failed to exec `{:?}`", adb_path)); Command::new(adb_path) .args(&["forward", "tcp:5039", "tcp:5039"]) .status() - .expect(&format!("failed to exec `{:?}`", adb_path)); + .unwrap_or_else(|_| panic!("failed to exec `{:?}`", adb_path)); let adb_arg = format!( "export LD_LIBRARY_PATH={}; \ @@ -897,7 +897,7 @@ impl<'test> TestCx<'test> { .stdout(Stdio::piped()) .stderr(Stdio::inherit()) .spawn() - .expect(&format!("failed to exec `{:?}`", adb_path)); + .unwrap_or_else(|_| panic!("failed to exec `{:?}`", adb_path)); // Wait for the gdbserver to print out "Listening on port ..." // at which point we know that it's started and then we can @@ -922,7 +922,7 @@ impl<'test> TestCx<'test> { let Output { status, stdout, stderr } = Command::new(&gdb_path) .args(debugger_opts) .output() - .expect(&format!("failed to exec `{:?}`", gdb_path)); + .unwrap_or_else(|_| panic!("failed to exec `{:?}`", gdb_path)); let cmdline = { let mut gdb = Command::new(&format!("{}-gdb", self.config.target)); gdb.args(debugger_opts); @@ -1063,11 +1063,11 @@ impl<'test> TestCx<'test> { } let prefixes = if self.config.lldb_native_rust { - static PREFIXES: &'static [&'static str] = &["lldb", "lldbr"]; + static PREFIXES: &[&str] = &["lldb", "lldbr"]; println!("NOTE: compiletest thinks it is using LLDB with native rust support"); PREFIXES } else { - static PREFIXES: &'static [&'static str] = &["lldb", "lldbg"]; + static PREFIXES: &[&str] = &["lldb", "lldbg"]; println!("NOTE: compiletest thinks it is using LLDB without native rust support"); PREFIXES }; @@ -1842,8 +1842,8 @@ impl<'test> TestCx<'test> { // Need to be sure to put both the lib_path and the aux path in the dylib // search path for the child. - let mut path = env::split_paths(&env::var_os(dylib_env_var()).unwrap_or(OsString::new())) - .collect::>(); + let mut path = + env::split_paths(&env::var_os(dylib_env_var()).unwrap_or_default()).collect::>(); if let Some(p) = aux_path { path.insert(0, PathBuf::from(p)) } @@ -1854,7 +1854,7 @@ impl<'test> TestCx<'test> { command.env(dylib_env_var(), newpath); let mut child = disable_error_reporting(|| command.spawn()) - .expect(&format!("failed to exec `{:?}`", &command)); + .unwrap_or_else(|_| panic!("failed to exec `{:?}`", &command)); if let Some(input) = input { child.stdin.as_mut().unwrap().write_all(input.as_bytes()).unwrap(); } @@ -2446,8 +2446,8 @@ impl<'test> TestCx<'test> { self.check_no_compiler_crash(&proc_res, self.props.should_ice); - const PREFIX: &'static str = "MONO_ITEM "; - const CGU_MARKER: &'static str = "@@"; + const PREFIX: &str = "MONO_ITEM "; + const CGU_MARKER: &str = "@@"; let actual: Vec = proc_res .stdout @@ -2976,7 +2976,7 @@ impl<'test> TestCx<'test> { Filter::MachineApplicableOnly, ) .unwrap_or_default(); - if suggestions.len() > 0 + if !suggestions.is_empty() && !self.props.run_rustfix && !self.props.rustfix_only_machine_applicable { @@ -2990,7 +2990,7 @@ impl<'test> TestCx<'test> { .open(coverage_file_path.as_path()) .expect("could not create or open file"); - if let Err(_) = writeln!(file, "{}", self.testpaths.file.display()) { + if writeln!(file, "{}", self.testpaths.file.display()).is_err() { panic!("couldn't write to {}", coverage_file_path.display()); } } @@ -3007,10 +3007,9 @@ impl<'test> TestCx<'test> { }, ) .unwrap(); - let fixed_code = apply_suggestions(&unfixed_code, &suggestions).expect(&format!( - "failed to apply suggestions for {:?} with rustfix", - self.testpaths.file - )); + let fixed_code = apply_suggestions(&unfixed_code, &suggestions).unwrap_or_else(|_| { + panic!("failed to apply suggestions for {:?} with rustfix", self.testpaths.file) + }); errors += self.compare_output("fixed", &fixed_code, &expected_fixed); } else if !expected_fixed.is_empty() { @@ -3519,7 +3518,7 @@ impl<'test> TestCx<'test> { let examined_content = self.load_expected_output_from_path(&examined_path).unwrap_or_else(|_| String::new()); - if canon_content == &examined_content { + if canon_content == examined_content { self.delete_file(&examined_path); } } diff --git a/src/tools/compiletest/src/util.rs b/src/tools/compiletest/src/util.rs index cc4b21f9efb..1a727fc2b82 100644 --- a/src/tools/compiletest/src/util.rs +++ b/src/tools/compiletest/src/util.rs @@ -9,7 +9,7 @@ use tracing::*; mod tests; /// Conversion table from triple OS name to Rust SYSNAME -const OS_TABLE: &'static [(&'static str, &'static str)] = &[ +const OS_TABLE: &[(&str, &str)] = &[ ("android", "android"), ("androideabi", "android"), ("cloudabi", "cloudabi"), @@ -37,7 +37,7 @@ const OS_TABLE: &'static [(&'static str, &'static str)] = &[ ("vxworks", "vxworks"), ]; -const ARCH_TABLE: &'static [(&'static str, &'static str)] = &[ +const ARCH_TABLE: &[(&str, &str)] = &[ ("aarch64", "aarch64"), ("amd64", "x86_64"), ("arm", "arm"), @@ -82,7 +82,7 @@ const ARCH_TABLE: &'static [(&'static str, &'static str)] = &[ ("xcore", "xcore"), ]; -pub const ASAN_SUPPORTED_TARGETS: &'static [&'static str] = &[ +pub const ASAN_SUPPORTED_TARGETS: &[&str] = &[ "aarch64-fuchsia", "aarch64-unknown-linux-gnu", "x86_64-apple-darwin", @@ -91,20 +91,20 @@ pub const ASAN_SUPPORTED_TARGETS: &'static [&'static str] = &[ "x86_64-unknown-linux-gnu", ]; -pub const LSAN_SUPPORTED_TARGETS: &'static [&'static str] = +pub const LSAN_SUPPORTED_TARGETS: &[&str] = &["aarch64-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu"]; -pub const MSAN_SUPPORTED_TARGETS: &'static [&'static str] = +pub const MSAN_SUPPORTED_TARGETS: &[&str] = &["aarch64-unknown-linux-gnu", "x86_64-unknown-freebsd", "x86_64-unknown-linux-gnu"]; -pub const TSAN_SUPPORTED_TARGETS: &'static [&'static str] = &[ +pub const TSAN_SUPPORTED_TARGETS: &[&str] = &[ "aarch64-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-unknown-freebsd", "x86_64-unknown-linux-gnu", ]; -const BIG_ENDIAN: &'static [&'static str] = &[ +const BIG_ENDIAN: &[&str] = &[ "armebv7r", "mips", "mips64", @@ -195,11 +195,11 @@ pub trait PathBufExt { impl PathBufExt for PathBuf { fn with_extra_extension>(&self, extension: S) -> PathBuf { - if extension.as_ref().len() == 0 { + if extension.as_ref().is_empty() { self.clone() } else { let mut fname = self.file_name().unwrap().to_os_string(); - if !extension.as_ref().to_str().unwrap().starts_with(".") { + if !extension.as_ref().to_str().unwrap().starts_with('.') { fname.push("."); } fname.push(extension);