@@ -12,7 +12,7 @@ extern crate rustc_plugin;
1212use rustc_interface:: interface;
1313use rustc_tools_util:: * ;
1414
15- use std:: path:: Path ;
15+ use std:: path:: { Path , PathBuf } ;
1616use std:: process:: { exit, Command } ;
1717
1818mod 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