Skip to content

Commit c100c70

Browse files
committed
Build sys_root in driver with PathBuf instead of String
1 parent 6b8ebcc commit c100c70

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/driver.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ extern crate rustc_plugin;
1212
use rustc_interface::interface;
1313
use rustc_tools_util::*;
1414

15-
use std::path::Path;
15+
use std::path::{Path, PathBuf};
1616
use std::process::{exit, Command};
1717

1818
mod lintlist;
@@ -270,12 +270,19 @@ pub fn main() {
270270
let sys_root_arg = arg_value(&orig_args, "--sysroot", |_| true);
271271
let have_sys_root_arg = sys_root_arg.is_some();
272272
let sys_root = sys_root_arg
273-
.map(std::string::ToString::to_string)
274-
.or_else(|| std::env::var("SYSROOT").ok())
273+
.map(PathBuf::from)
274+
.or_else(|| std::env::var("SYSROOT").ok().map(PathBuf::from))
275275
.or_else(|| {
276276
let home = option_env!("RUSTUP_HOME").or(option_env!("MULTIRUST_HOME"));
277277
let toolchain = option_env!("RUSTUP_TOOLCHAIN").or(option_env!("MULTIRUST_TOOLCHAIN"));
278-
home.and_then(|home| toolchain.map(|toolchain| format!("{}/toolchains/{}", home, toolchain)))
278+
home.and_then(|home| {
279+
toolchain.map(|toolchain| {
280+
let mut path = PathBuf::from(home);
281+
path.push("toolchains");
282+
path.push(toolchain);
283+
path
284+
})
285+
})
279286
})
280287
.or_else(|| {
281288
Command::new("rustc")
@@ -284,9 +291,10 @@ pub fn main() {
284291
.output()
285292
.ok()
286293
.and_then(|out| String::from_utf8(out.stdout).ok())
287-
.map(|s| s.trim().to_owned())
294+
.map(|s| PathBuf::from(s.trim()))
288295
})
289-
.or_else(|| option_env!("SYSROOT").map(String::from))
296+
.or_else(|| option_env!("SYSROOT").map(PathBuf::from))
297+
.map(|pb| pb.to_string_lossy().to_string())
290298
.expect("need to specify SYSROOT env var during clippy compilation, or use rustup or multirust");
291299

292300
// Setting RUSTC_WRAPPER causes Cargo to pass 'rustc' as the first argument.

0 commit comments

Comments
 (0)