@@ -281,6 +281,17 @@ fn report_clippy_ice(info: &panic::PanicInfo<'_>, bug_report_url: &str) {
281
281
}
282
282
}
283
283
284
+ fn toolchain_path ( home : Option < String > , toolchain : Option < String > ) -> Option < PathBuf > {
285
+ home. and_then ( |home| {
286
+ toolchain. map ( |toolchain| {
287
+ let mut path = PathBuf :: from ( home) ;
288
+ path. push ( "toolchains" ) ;
289
+ path. push ( toolchain) ;
290
+ path
291
+ } )
292
+ } )
293
+ }
294
+
284
295
pub fn main ( ) {
285
296
rustc_driver:: init_rustc_env_logger ( ) ;
286
297
lazy_static:: initialize ( & ICE_HOOK ) ;
@@ -301,22 +312,21 @@ pub fn main() {
301
312
// - RUSTUP_HOME, MULTIRUST_HOME, RUSTUP_TOOLCHAIN, MULTIRUST_TOOLCHAIN
302
313
// - sysroot from rustc in the path
303
314
// - compile-time environment
315
+ // - SYSROOT
316
+ // - RUSTUP_HOME, MULTIRUST_HOME, RUSTUP_TOOLCHAIN, MULTIRUST_TOOLCHAIN
304
317
let sys_root_arg = arg_value ( & orig_args, "--sysroot" , |_| true ) ;
305
318
let have_sys_root_arg = sys_root_arg. is_some ( ) ;
306
319
let sys_root = sys_root_arg
307
320
. map ( PathBuf :: from)
308
321
. or_else ( || std:: env:: var ( "SYSROOT" ) . ok ( ) . map ( PathBuf :: from) )
309
322
. or_else ( || {
310
- let home = option_env ! ( "RUSTUP_HOME" ) . or ( option_env ! ( "MULTIRUST_HOME" ) ) ;
311
- let toolchain = option_env ! ( "RUSTUP_TOOLCHAIN" ) . or ( option_env ! ( "MULTIRUST_TOOLCHAIN" ) ) ;
312
- home. and_then ( |home| {
313
- toolchain. map ( |toolchain| {
314
- let mut path = PathBuf :: from ( home) ;
315
- path. push ( "toolchains" ) ;
316
- path. push ( toolchain) ;
317
- path
318
- } )
319
- } )
323
+ let home = std:: env:: var ( "RUSTUP_HOME" )
324
+ . or_else ( |_| std:: env:: var ( "MULTIRUST_HOME" ) )
325
+ . ok ( ) ;
326
+ let toolchain = std:: env:: var ( "RUSTUP_TOOLCHAIN" )
327
+ . or_else ( |_| std:: env:: var ( "MULTIRUST_TOOLCHAIN" ) )
328
+ . ok ( ) ;
329
+ toolchain_path ( home, toolchain)
320
330
} )
321
331
. or_else ( || {
322
332
Command :: new ( "rustc" )
@@ -328,6 +338,15 @@ pub fn main() {
328
338
. map ( |s| PathBuf :: from ( s. trim ( ) ) )
329
339
} )
330
340
. or_else ( || option_env ! ( "SYSROOT" ) . map ( PathBuf :: from) )
341
+ . or_else ( || {
342
+ let home = option_env ! ( "RUSTUP_HOME" )
343
+ . or ( option_env ! ( "MULTIRUST_HOME" ) )
344
+ . map ( ToString :: to_string) ;
345
+ let toolchain = option_env ! ( "RUSTUP_TOOLCHAIN" )
346
+ . or ( option_env ! ( "MULTIRUST_TOOLCHAIN" ) )
347
+ . map ( ToString :: to_string) ;
348
+ toolchain_path ( home, toolchain)
349
+ } )
331
350
. map ( |pb| pb. to_string_lossy ( ) . to_string ( ) )
332
351
. expect ( "need to specify SYSROOT env var during clippy compilation, or use rustup or multirust" ) ;
333
352
0 commit comments