Auto merge of #42896 - llogiq:clippy_compiletest, r=alexcrichton

fixed some clippy warnings in compiletest

This is mainly readability stuff. Whenever the `clone_ref` lint asked me to clone the dereferenced object, I removed the `.clone()` instead, relying on the fact that it has worked so far and the immutable borrow ensures that the value won't change.
This commit is contained in:
bors 2017-07-01 03:26:29 +00:00
commit 4a92ae2524
6 changed files with 79 additions and 94 deletions

View File

@ -35,7 +35,7 @@ fn from_str(s: &str) -> Result<Self, Self::Err> {
"ERROR" => Ok(ErrorKind::Error), "ERROR" => Ok(ErrorKind::Error),
"NOTE" => Ok(ErrorKind::Note), "NOTE" => Ok(ErrorKind::Note),
"SUGGESTION" => Ok(ErrorKind::Suggestion), "SUGGESTION" => Ok(ErrorKind::Suggestion),
"WARN" => Ok(ErrorKind::Warning), "WARN" |
"WARNING" => Ok(ErrorKind::Warning), "WARNING" => Ok(ErrorKind::Warning),
_ => Err(()), _ => Err(()),
} }
@ -95,7 +95,7 @@ pub fn load_errors(testfile: &Path, cfg: Option<&str>) -> Vec<Error> {
let tag = match cfg { let tag = match cfg {
Some(rev) => format!("//[{}]~", rev), Some(rev) => format!("//[{}]~", rev),
None => format!("//~"), None => "//~".to_string(),
}; };
rdr.lines() rdr.lines()
@ -153,7 +153,7 @@ fn parse_expected(last_nonfollow_error: Option<usize>,
let msg = msg.trim().to_owned(); let msg = msg.trim().to_owned();
let (which, line_num) = if follow { let (which, line_num) = if follow {
assert!(adjusts == 0, "use either //~| or //~^, not both."); assert_eq!(adjusts, 0, "use either //~| or //~^, not both.");
let line_num = last_nonfollow_error.expect("encountered //~| without \ let line_num = last_nonfollow_error.expect("encountered //~| without \
preceding //~^ line."); preceding //~^ line.");
(FollowPrevious(line_num), line_num) (FollowPrevious(line_num), line_num)

View File

@ -258,7 +258,7 @@ pub fn new() -> Self {
check_stdout: false, check_stdout: false,
no_prefer_dynamic: false, no_prefer_dynamic: false,
pretty_expanded: false, pretty_expanded: false,
pretty_mode: format!("normal"), pretty_mode: "normal".to_string(),
pretty_compare_only: false, pretty_compare_only: false,
forbid_output: vec![], forbid_output: vec![],
incremental_dir: None, incremental_dir: None,
@ -381,14 +381,11 @@ pub fn load_from(&mut self,
} }
}); });
for key in vec!["RUST_TEST_NOCAPTURE", "RUST_TEST_THREADS"] { for key in &["RUST_TEST_NOCAPTURE", "RUST_TEST_THREADS"] {
match env::var(key) { if let Ok(val) = env::var(key) {
Ok(val) => { if self.exec_env.iter().find(|&&(ref x, _)| x == key).is_none() {
if self.exec_env.iter().find(|&&(ref x, _)| *x == key).is_none() { self.exec_env.push(((*key).to_owned(), val))
self.exec_env.push((key.to_owned(), val))
}
} }
Err(..) => {}
} }
} }
} }
@ -409,7 +406,7 @@ fn iter_header(testfile: &Path, cfg: Option<&str>, it: &mut FnMut(&str)) {
return; return;
} else if ln.starts_with("//[") { } else if ln.starts_with("//[") {
// A comment like `//[foo]` is specific to revision `foo` // A comment like `//[foo]` is specific to revision `foo`
if let Some(close_brace) = ln.find("]") { if let Some(close_brace) = ln.find(']') {
let lncfg = &ln[3..close_brace]; let lncfg = &ln[3..close_brace];
let matches = match cfg { let matches = match cfg {
Some(s) => s == &lncfg[..], Some(s) => s == &lncfg[..],
@ -521,12 +518,10 @@ fn parse_env(&self, line: &str, name: &str) -> Option<(String, String)> {
fn parse_pp_exact(&self, line: &str, testfile: &Path) -> Option<PathBuf> { fn parse_pp_exact(&self, line: &str, testfile: &Path) -> Option<PathBuf> {
if let Some(s) = self.parse_name_value_directive(line, "pp-exact") { if let Some(s) = self.parse_name_value_directive(line, "pp-exact") {
Some(PathBuf::from(&s)) Some(PathBuf::from(&s))
} else if self.parse_name_directive(line, "pp-exact") {
testfile.file_name().map(PathBuf::from)
} else { } else {
if self.parse_name_directive(line, "pp-exact") { None
testfile.file_name().map(PathBuf::from)
} else {
None
}
} }
} }
@ -554,9 +549,7 @@ pub fn parse_name_value_directive(&self, line: &str, directive: &str) -> Option<
pub fn lldb_version_to_int(version_string: &str) -> isize { pub fn lldb_version_to_int(version_string: &str) -> isize {
let error_string = format!("Encountered LLDB version string with unexpected format: {}", let error_string = format!("Encountered LLDB version string with unexpected format: {}",
version_string); version_string);
let error_string = error_string; version_string.parse().expect(&error_string)
let major: isize = version_string.parse().ok().expect(&error_string);
return major;
} }
fn expand_variables(mut value: String, config: &Config) -> String { fn expand_variables(mut value: String, config: &Config) -> String {

View File

@ -65,7 +65,7 @@ pub fn parse_output(file_name: &str, output: &str, proc_res: &ProcRes) -> Vec<Er
fn parse_line(file_name: &str, line: &str, output: &str, proc_res: &ProcRes) -> Vec<Error> { fn parse_line(file_name: &str, line: &str, output: &str, proc_res: &ProcRes) -> Vec<Error> {
// The compiler sometimes intermingles non-JSON stuff into the // The compiler sometimes intermingles non-JSON stuff into the
// output. This hack just skips over such lines. Yuck. // output. This hack just skips over such lines. Yuck.
if line.chars().next() == Some('{') { if line.starts_with('{') {
match json::decode::<Diagnostic>(line) { match json::decode::<Diagnostic>(line) {
Ok(diagnostic) => { Ok(diagnostic) => {
let mut expected_errors = vec![]; let mut expected_errors = vec![];

View File

@ -168,7 +168,7 @@ fn make_absolute(path: PathBuf) -> PathBuf {
src_base: opt_path(matches, "src-base"), src_base: opt_path(matches, "src-base"),
build_base: opt_path(matches, "build-base"), build_base: opt_path(matches, "build-base"),
stage_id: matches.opt_str("stage-id").unwrap(), stage_id: matches.opt_str("stage-id").unwrap(),
mode: matches.opt_str("mode").unwrap().parse().ok().expect("invalid mode"), mode: matches.opt_str("mode").unwrap().parse().expect("invalid mode"),
run_ignored: matches.opt_present("ignored"), run_ignored: matches.opt_present("ignored"),
filter: matches.free.first().cloned(), filter: matches.free.first().cloned(),
filter_exact: matches.opt_present("exact"), filter_exact: matches.opt_present("exact"),
@ -208,7 +208,7 @@ fn make_absolute(path: PathBuf) -> PathBuf {
pub fn log_config(config: &Config) { pub fn log_config(config: &Config) {
let c = config; let c = config;
logv(c, format!("configuration:")); logv(c, "configuration:".to_string());
logv(c, format!("compile_lib_path: {:?}", config.compile_lib_path)); logv(c, format!("compile_lib_path: {:?}", config.compile_lib_path));
logv(c, format!("run_lib_path: {:?}", config.run_lib_path)); logv(c, format!("run_lib_path: {:?}", config.run_lib_path));
logv(c, format!("rustc_path: {:?}", config.rustc_path.display())); logv(c, format!("rustc_path: {:?}", config.rustc_path.display()));
@ -238,10 +238,10 @@ pub fn log_config(config: &Config) {
config.adb_device_status)); config.adb_device_status));
logv(c, format!("verbose: {}", config.verbose)); logv(c, format!("verbose: {}", config.verbose));
logv(c, format!("quiet: {}", config.quiet)); logv(c, format!("quiet: {}", config.quiet));
logv(c, format!("\n")); logv(c, "\n".to_string());
} }
pub fn opt_str<'a>(maybestr: &'a Option<String>) -> &'a str { pub fn opt_str(maybestr: &Option<String>) -> &str {
match *maybestr { match *maybestr {
None => "(none)", None => "(none)",
Some(ref s) => s, Some(ref s) => s,
@ -465,11 +465,9 @@ pub fn make_test(config: &Config, testpaths: &TestPaths) -> test::TestDescAndFn
}; };
// Debugging emscripten code doesn't make sense today // Debugging emscripten code doesn't make sense today
let mut ignore = early_props.ignore || !up_to_date(config, testpaths, &early_props); let ignore = early_props.ignore || !up_to_date(config, testpaths, &early_props) ||
if (config.mode == DebugInfoGdb || config.mode == DebugInfoLldb) && (config.mode == DebugInfoGdb || config.mode == DebugInfoLldb) &&
config.target.contains("emscripten") { config.target.contains("emscripten");
ignore = true;
}
test::TestDescAndFn { test::TestDescAndFn {
desc: test::TestDesc { desc: test::TestDesc {
@ -488,7 +486,7 @@ fn stamp(config: &Config, testpaths: &TestPaths) -> PathBuf {
.to_str().unwrap(), .to_str().unwrap(),
config.stage_id); config.stage_id);
config.build_base.canonicalize() config.build_base.canonicalize()
.unwrap_or(config.build_base.clone()) .unwrap_or_else(|_| config.build_base.clone())
.join(stamp_name) .join(stamp_name)
} }
@ -513,7 +511,7 @@ fn up_to_date(config: &Config, testpaths: &TestPaths, props: &EarlyProps) -> boo
fn mtime(path: &Path) -> FileTime { fn mtime(path: &Path) -> FileTime {
fs::metadata(path).map(|f| { fs::metadata(path).map(|f| {
FileTime::from_last_modification_time(&f) FileTime::from_last_modification_time(&f)
}).unwrap_or(FileTime::zero()) }).unwrap_or_else(|_| FileTime::zero())
} }
pub fn make_test_name(config: &Config, testpaths: &TestPaths) -> test::TestName { pub fn make_test_name(config: &Config, testpaths: &TestPaths) -> test::TestName {
@ -561,7 +559,7 @@ fn analyze_gdb(gdb: Option<String>) -> (Option<String>, Option<u32>, bool) {
let gdb_native_rust = version.map_or(false, |v| v >= MIN_GDB_WITH_RUST); let gdb_native_rust = version.map_or(false, |v| v >= MIN_GDB_WITH_RUST);
return (Some(gdb.to_owned()), version, gdb_native_rust); (Some(gdb.to_owned()), version, gdb_native_rust)
} }
fn extract_gdb_version(full_version_line: &str) -> Option<u32> { fn extract_gdb_version(full_version_line: &str) -> Option<u32> {
@ -601,7 +599,8 @@ fn extract_gdb_version(full_version_line: &str) -> Option<u32> {
Some(idx) => if line.as_bytes()[idx] == b'.' { Some(idx) => if line.as_bytes()[idx] == b'.' {
let patch = &line[idx + 1..]; let patch = &line[idx + 1..];
let patch_len = patch.find(|c: char| !c.is_digit(10)).unwrap_or(patch.len()); let patch_len = patch.find(|c: char| !c.is_digit(10))
.unwrap_or_else(|| patch.len());
let patch = &patch[..patch_len]; let patch = &patch[..patch_len];
let patch = if patch_len > 3 || patch_len == 0 { None } else { Some(patch) }; let patch = if patch_len > 3 || patch_len == 0 { None } else { Some(patch) };

View File

@ -9,7 +9,6 @@
// except according to those terms. // except according to those terms.
use std::env; use std::env;
use std::ffi::OsString;
use std::io::prelude::*; use std::io::prelude::*;
use std::io; use std::io;
use std::path::PathBuf; use std::path::PathBuf;
@ -31,7 +30,7 @@ fn add_target_env(cmd: &mut Command, lib_path: &str, aux_path: Option<&str>) {
// Need to be sure to put both the lib_path and the aux path in the dylib // Need to be sure to put both the lib_path and the aux path in the dylib
// search path for the child. // search path for the child.
let var = dylib_env_var(); let var = dylib_env_var();
let mut path = env::split_paths(&env::var_os(var).unwrap_or(OsString::new())) let mut path = env::split_paths(&env::var_os(var).unwrap_or_default())
.collect::<Vec<_>>(); .collect::<Vec<_>>();
if let Some(p) = aux_path { if let Some(p) = aux_path {
path.insert(0, PathBuf::from(p)) path.insert(0, PathBuf::from(p))

View File

@ -68,7 +68,7 @@ pub fn run(config: Config, testpaths: &TestPaths) {
} else { } else {
for revision in &base_props.revisions { for revision in &base_props.revisions {
let mut revision_props = base_props.clone(); let mut revision_props = base_props.clone();
revision_props.load_from(&testpaths.file, Some(&revision), &config); revision_props.load_from(&testpaths.file, Some(revision), &config);
let rev_cx = TestCx { let rev_cx = TestCx {
config: &config, config: &config,
props: &revision_props, props: &revision_props,
@ -81,7 +81,7 @@ pub fn run(config: Config, testpaths: &TestPaths) {
base_cx.complete_all(); base_cx.complete_all();
File::create(::stamp(&config, &testpaths)).unwrap(); File::create(::stamp(&config, testpaths)).unwrap();
} }
struct TestCx<'test> { struct TestCx<'test> {
@ -101,9 +101,8 @@ impl<'test> TestCx<'test> {
/// invoked once before any revisions have been processed /// invoked once before any revisions have been processed
fn init_all(&self) { fn init_all(&self) {
assert!(self.revision.is_none(), "init_all invoked for a revision"); assert!(self.revision.is_none(), "init_all invoked for a revision");
match self.config.mode { if let Incremental = self.config.mode {
Incremental => self.init_incremental_test(), self.init_incremental_test()
_ => { }
} }
} }
@ -111,7 +110,7 @@ fn init_all(&self) {
/// revisions, exactly once, with revision == None). /// revisions, exactly once, with revision == None).
fn run_revision(&self) { fn run_revision(&self) {
match self.config.mode { match self.config.mode {
CompileFail => self.run_cfail_test(), CompileFail |
ParseFail => self.run_cfail_test(), ParseFail => self.run_cfail_test(),
RunFail => self.run_rfail_test(), RunFail => self.run_rfail_test(),
RunPass => self.run_rpass_test(), RunPass => self.run_rpass_test(),
@ -352,10 +351,10 @@ fn make_pp_args(&self,
aux_dir.to_str().unwrap().to_owned()]; aux_dir.to_str().unwrap().to_owned()];
args.extend(self.split_maybe_args(&self.config.target_rustcflags)); args.extend(self.split_maybe_args(&self.config.target_rustcflags));
args.extend(self.props.compile_flags.iter().cloned()); args.extend(self.props.compile_flags.iter().cloned());
return ProcArgs { ProcArgs {
prog: self.config.rustc_path.to_str().unwrap().to_owned(), prog: self.config.rustc_path.to_str().unwrap().to_owned(),
args: args, args: args,
}; }
} }
fn compare_source(&self, fn compare_source(&self,
@ -407,17 +406,17 @@ fn make_typecheck_args(&self) -> ProcArgs {
aux_dir.to_str().unwrap().to_owned()]; aux_dir.to_str().unwrap().to_owned()];
if let Some(revision) = self.revision { if let Some(revision) = self.revision {
args.extend(vec![ args.extend(vec![
format!("--cfg"), "--cfg".to_string(),
format!("{}", revision), revision.to_string(),
]); ]);
} }
args.extend(self.split_maybe_args(&self.config.target_rustcflags)); args.extend(self.split_maybe_args(&self.config.target_rustcflags));
args.extend(self.props.compile_flags.iter().cloned()); args.extend(self.props.compile_flags.iter().cloned());
// FIXME (#9639): This needs to handle non-utf8 paths // FIXME (#9639): This needs to handle non-utf8 paths
return ProcArgs { ProcArgs {
prog: self.config.rustc_path.to_str().unwrap().to_owned(), prog: self.config.rustc_path.to_str().unwrap().to_owned(),
args: args, args: args,
}; }
} }
fn run_debuginfo_gdb_test(&self) { fn run_debuginfo_gdb_test(&self) {
@ -708,7 +707,7 @@ fn find_rust_src_root(&self) -> Option<PathBuf> {
} }
} }
return None; None
} }
fn run_debuginfo_lldb_test(&self) { fn run_debuginfo_lldb_test(&self) {
@ -875,13 +874,13 @@ fn parse_debugger_commands(&self, debugger_prefixes: &[&str]) -> DebuggerCommand
for &(ref command_directive, ref check_directive) in &directives { for &(ref command_directive, ref check_directive) in &directives {
self.config.parse_name_value_directive( self.config.parse_name_value_directive(
&line, &line,
&command_directive).map(|cmd| { command_directive).map(|cmd| {
commands.push(cmd) commands.push(cmd)
}); });
self.config.parse_name_value_directive( self.config.parse_name_value_directive(
&line, &line,
&check_directive).map(|cmd| { check_directive).map(|cmd| {
check_lines.push(cmd) check_lines.push(cmd)
}); });
} }
@ -962,8 +961,7 @@ fn check_single_line(line: &str, check_line: &str) -> bool {
(line, 0) (line, 0)
}; };
for fragment_index in first_fragment .. check_fragments.len() { for current_fragment in &check_fragments[first_fragment..] {
let current_fragment = check_fragments[fragment_index];
match rest.find(current_fragment) { match rest.find(current_fragment) {
Some(pos) => { Some(pos) => {
rest = &rest[pos + current_fragment.len() .. ]; rest = &rest[pos + current_fragment.len() .. ];
@ -976,7 +974,7 @@ fn check_single_line(line: &str, check_line: &str) -> bool {
return false; return false;
} }
return true; true
} }
} }
@ -1059,7 +1057,7 @@ fn check_expected_errors(&self,
let expect_note = expected_errors.iter().any(|ee| ee.kind == Some(ErrorKind::Note)); let expect_note = expected_errors.iter().any(|ee| ee.kind == Some(ErrorKind::Note));
// Parse the JSON output from the compiler and extract out the messages. // Parse the JSON output from the compiler and extract out the messages.
let actual_errors = json::parse_output(&file_name, &proc_res.stderr, &proc_res); let actual_errors = json::parse_output(&file_name, &proc_res.stderr, proc_res);
let mut unexpected = Vec::new(); let mut unexpected = Vec::new();
let mut found = vec![false; expected_errors.len()]; let mut found = vec![false; expected_errors.len()];
for actual_error in &actual_errors { for actual_error in &actual_errors {
@ -1092,7 +1090,7 @@ fn check_expected_errors(&self,
.map_or(String::from("message"), .map_or(String::from("message"),
|k| k.to_string()), |k| k.to_string()),
actual_error.msg)); actual_error.msg));
unexpected.push(actual_error.clone()); unexpected.push(actual_error);
} }
} }
} }
@ -1110,20 +1108,20 @@ fn check_expected_errors(&self,
.map_or("message".into(), .map_or("message".into(),
|k| k.to_string()), |k| k.to_string()),
expected_error.msg)); expected_error.msg));
not_found.push(expected_error.clone()); not_found.push(expected_error);
} }
} }
if unexpected.len() > 0 || not_found.len() > 0 { if !unexpected.is_empty() || !not_found.is_empty() {
self.error( self.error(
&format!("{} unexpected errors found, {} expected errors not found", &format!("{} unexpected errors found, {} expected errors not found",
unexpected.len(), not_found.len())); unexpected.len(), not_found.len()));
print!("status: {}\ncommand: {}\n", println!("status: {}\ncommand: {}",
proc_res.status, proc_res.cmdline); proc_res.status, proc_res.cmdline);
if unexpected.len() > 0 { if !unexpected.is_empty() {
println!("unexpected errors (from JSON output): {:#?}\n", unexpected); println!("unexpected errors (from JSON output): {:#?}\n", unexpected);
} }
if not_found.len() > 0 { if !not_found.is_empty() {
println!("not found errors (from test file): {:#?}\n", not_found); println!("not found errors (from test file): {:#?}\n", not_found);
} }
panic!(); panic!();
@ -1142,9 +1140,9 @@ fn is_unexpected_compiler_message(&self,
match actual_error.kind { match actual_error.kind {
Some(ErrorKind::Help) => expect_help, Some(ErrorKind::Help) => expect_help,
Some(ErrorKind::Note) => expect_note, Some(ErrorKind::Note) => expect_note,
Some(ErrorKind::Error) => true, Some(ErrorKind::Error) |
Some(ErrorKind::Warning) => true, Some(ErrorKind::Warning) => true,
Some(ErrorKind::Suggestion) => false, Some(ErrorKind::Suggestion) |
None => false None => false
} }
} }
@ -1287,7 +1285,8 @@ fn compose_and_run_compiler(&self, args: ProcArgs, input: Option<String>) -> Pro
self.config); self.config);
let mut crate_type = if aux_props.no_prefer_dynamic { let mut crate_type = if aux_props.no_prefer_dynamic {
Vec::new() Vec::new()
} else { } else if (self.config.target.contains("musl") && !aux_props.force_host) ||
self.config.target.contains("emscripten") {
// We primarily compile all auxiliary libraries as dynamic libraries // We primarily compile all auxiliary libraries as dynamic libraries
// to avoid code size bloat and large binaries as much as possible // to avoid code size bloat and large binaries as much as possible
// for the test suite (otherwise including libstd statically in all // for the test suite (otherwise including libstd statically in all
@ -1297,13 +1296,9 @@ fn compose_and_run_compiler(&self, args: ProcArgs, input: Option<String>) -> Pro
// dynamic libraries so we just go back to building a normal library. Note, // dynamic libraries so we just go back to building a normal library. Note,
// however, that for MUSL if the library is built with `force_host` then // however, that for MUSL if the library is built with `force_host` then
// it's ok to be a dylib as the host should always support dylibs. // it's ok to be a dylib as the host should always support dylibs.
if (self.config.target.contains("musl") && !aux_props.force_host) || vec!["--crate-type=lib".to_owned()]
self.config.target.contains("emscripten") } else {
{ vec!["--crate-type=dylib".to_owned()]
vec!["--crate-type=lib".to_owned()]
} else {
vec!["--crate-type=dylib".to_owned()]
}
}; };
crate_type.extend(extra_link_args.clone()); crate_type.extend(extra_link_args.clone());
let aux_output = { let aux_output = {
@ -1344,7 +1339,7 @@ fn compose_and_run(&self,
lib_path: &str, lib_path: &str,
aux_path: Option<&str>, aux_path: Option<&str>,
input: Option<String>) -> ProcRes { input: Option<String>) -> ProcRes {
return self.program_output(lib_path, prog, aux_path, args, procenv, input); self.program_output(lib_path, prog, aux_path, args, procenv, input)
} }
fn make_compile_args(&self, fn make_compile_args(&self,
@ -1367,7 +1362,7 @@ fn make_compile_args(&self,
// Optionally prevent default --target if specified in test compile-flags. // Optionally prevent default --target if specified in test compile-flags.
let custom_target = self.props.compile_flags let custom_target = self.props.compile_flags
.iter() .iter()
.fold(false, |acc, ref x| acc || x.starts_with("--target")); .fold(false, |acc, x| acc || x.starts_with("--target"));
if !custom_target { if !custom_target {
args.extend(vec![ args.extend(vec![
@ -1377,14 +1372,14 @@ fn make_compile_args(&self,
if let Some(revision) = self.revision { if let Some(revision) = self.revision {
args.extend(vec![ args.extend(vec![
format!("--cfg"), "--cfg".to_string(),
format!("{}", revision), revision.to_string(),
]); ]);
} }
if let Some(ref incremental_dir) = self.props.incremental_dir { if let Some(ref incremental_dir) = self.props.incremental_dir {
args.extend(vec![ args.extend(vec![
format!("-Z"), "-Z".to_string(),
format!("incremental={}", incremental_dir.display()), format!("incremental={}", incremental_dir.display()),
]); ]);
} }
@ -1457,10 +1452,10 @@ fn make_compile_args(&self,
args.extend(self.split_maybe_args(&self.config.target_rustcflags)); args.extend(self.split_maybe_args(&self.config.target_rustcflags));
} }
args.extend(self.props.compile_flags.iter().cloned()); args.extend(self.props.compile_flags.iter().cloned());
return ProcArgs { ProcArgs {
prog: self.config.rustc_path.to_str().unwrap().to_owned(), prog: self.config.rustc_path.to_str().unwrap().to_owned(),
args: args, args: args,
}; }
} }
fn make_lib_name(&self, auxfile: &Path) -> PathBuf { fn make_lib_name(&self, auxfile: &Path) -> PathBuf {
@ -1508,10 +1503,10 @@ fn make_run_args(&self) -> ProcArgs {
args.extend(self.split_maybe_args(&self.props.run_flags)); args.extend(self.split_maybe_args(&self.props.run_flags));
let prog = args.remove(0); let prog = args.remove(0);
return ProcArgs { ProcArgs {
prog: prog, prog: prog,
args: args, args: args,
}; }
} }
fn split_maybe_args(&self, argstr: &Option<String>) -> Vec<String> { fn split_maybe_args(&self, argstr: &Option<String>) -> Vec<String> {
@ -1558,12 +1553,12 @@ fn program_output(&self,
env, env,
input).expect(&format!("failed to exec `{}`", prog)); input).expect(&format!("failed to exec `{}`", prog));
self.dump_output(&out, &err); self.dump_output(&out, &err);
return ProcRes { ProcRes {
status: status, status: status,
stdout: out, stdout: out,
stderr: err, stderr: err,
cmdline: cmdline, cmdline: cmdline,
}; }
} }
fn make_cmdline(&self, libpath: &str, prog: &str, args: &[String]) -> String { fn make_cmdline(&self, libpath: &str, prog: &str, args: &[String]) -> String {
@ -1764,7 +1759,7 @@ fn run_rustdoc_test(&self) {
self.fatal_proc_rec("rustdoc failed!", &proc_res); self.fatal_proc_rec("rustdoc failed!", &proc_res);
} }
if self.props.check_test_line_numbers_match == true { if self.props.check_test_line_numbers_match {
self.check_rustdoc_test_option(proc_res); self.check_rustdoc_test_option(proc_res);
} else { } else {
let root = self.find_rust_src_root().unwrap(); let root = self.find_rust_src_root().unwrap();
@ -1791,7 +1786,7 @@ fn get_lines<P: AsRef<Path>>(&self, path: &P,
.filter_map(|(line_nb, line)| { .filter_map(|(line_nb, line)| {
if (line.trim_left().starts_with("pub mod ") || if (line.trim_left().starts_with("pub mod ") ||
line.trim_left().starts_with("mod ")) && line.trim_left().starts_with("mod ")) &&
line.ends_with(";") { line.ends_with(';') {
if let Some(ref mut other_files) = other_files { if let Some(ref mut other_files) = other_files {
other_files.push(line.rsplit("mod ") other_files.push(line.rsplit("mod ")
.next() .next()
@ -1840,7 +1835,7 @@ fn check_rustdoc_test_option(&self, res: ProcRes) {
} }
let mut tested = 0; let mut tested = 0;
for _ in res.stdout.split("\n") for _ in res.stdout.split('\n')
.filter(|s| s.starts_with("test ")) .filter(|s| s.starts_with("test "))
.inspect(|s| { .inspect(|s| {
let tmp: Vec<&str> = s.split(" - ").collect(); let tmp: Vec<&str> = s.split(" - ").collect();
@ -1853,7 +1848,7 @@ fn check_rustdoc_test_option(&self, res: ProcRes) {
iter.next(); iter.next();
let line = iter.next() let line = iter.next()
.unwrap_or(")") .unwrap_or(")")
.split(")") .split(')')
.next() .next()
.unwrap_or("0") .unwrap_or("0")
.parse() .parse()
@ -1873,7 +1868,7 @@ fn check_rustdoc_test_option(&self, res: ProcRes) {
self.fatal_proc_rec(&format!("No test has been found... {:?}", files), &res); self.fatal_proc_rec(&format!("No test has been found... {:?}", files), &res);
} else { } else {
for (entry, v) in &files { for (entry, v) in &files {
if v.len() != 0 { if !v.is_empty() {
self.fatal_proc_rec(&format!("Not found test at line{} \"{}\":{:?}", self.fatal_proc_rec(&format!("Not found test at line{} \"{}\":{:?}",
if v.len() > 1 { "s" } else { "" }, entry, v), if v.len() > 1 { "s" } else { "" }, entry, v),
&res); &res);
@ -1916,11 +1911,10 @@ fn run_codegen_units_test(&self) {
.find(|ti| ti.name == expected_item.name); .find(|ti| ti.name == expected_item.name);
if let Some(actual_item) = actual_item_with_same_name { if let Some(actual_item) = actual_item_with_same_name {
if !expected_item.codegen_units.is_empty() { if !expected_item.codegen_units.is_empty() &&
// Also check for codegen units // Also check for codegen units
if expected_item.codegen_units != actual_item.codegen_units { expected_item.codegen_units != actual_item.codegen_units {
wrong_cgus.push((expected_item.clone(), actual_item.clone())); wrong_cgus.push((expected_item.clone(), actual_item.clone()));
}
} }
} else { } else {
missing.push(expected_item.string.clone()); missing.push(expected_item.string.clone());
@ -2005,7 +1999,7 @@ fn str_to_trans_item(s: &str) -> TransItem {
let cgus = if parts.len() > 1 { let cgus = if parts.len() > 1 {
let cgus_str = parts[1]; let cgus_str = parts[1];
cgus_str.split(" ") cgus_str.split(' ')
.map(str::trim) .map(str::trim)
.filter(|s| !s.is_empty()) .filter(|s| !s.is_empty())
.map(str::to_owned) .map(str::to_owned)
@ -2323,7 +2317,7 @@ fn check_mir_test_timestamp(&self, test_name: &str, output_file: &Path) {
} }
} }
fn compare_mir_test_output(&self, test_name: &str, expected_content: &Vec<&str>) { fn compare_mir_test_output(&self, test_name: &str, expected_content: &[&str]) {
let mut output_file = PathBuf::new(); let mut output_file = PathBuf::new();
output_file.push(self.get_mir_dump_dir()); output_file.push(self.get_mir_dump_dir());
output_file.push(test_name); output_file.push(test_name);