@@ -372,6 +372,16 @@ path = "lib.rs"
372372}
373373
374374fn phase_cargo_miri ( mut args : env:: Args ) {
375+ // Check for version and help flags even when invoked as `cargo-miri`.
376+ if has_arg_flag ( "--help" ) || has_arg_flag ( "-h" ) {
377+ show_help ( ) ;
378+ return ;
379+ }
380+ if has_arg_flag ( "--version" ) || has_arg_flag ( "-V" ) {
381+ show_version ( ) ;
382+ return ;
383+ }
384+
375385 // Require a subcommand before any flags.
376386 // We cannot know which of those flags take arguments and which do not,
377387 // so we cannot detect subcommands later.
@@ -567,6 +577,13 @@ fn phase_cargo_runner(binary: &str, binary_args: env::Args) {
567577 let info: CrateRunInfo = serde_json:: from_reader ( file)
568578 . unwrap_or_else ( |_| show_error ( format ! ( "File {:?} does not contain valid JSON" , binary) ) ) ;
569579
580+ // Set missing env vars.
581+ for ( name, val) in info. env {
582+ if env:: var_os ( & name) . is_none ( ) {
583+ env:: set_var ( name, val) ;
584+ }
585+ }
586+
570587 let mut cmd = miri ( ) ;
571588 // Forward rustc arguments. We need to patch "--extern" filenames because
572589 // we forced a check-only build without cargo knowing about that: replace `.rlib` suffix by `.rmeta`.
@@ -610,16 +627,6 @@ fn phase_cargo_runner(binary: &str, binary_args: env::Args) {
610627}
611628
612629fn main ( ) {
613- // Check for version and help flags even when invoked as `cargo-miri`.
614- if has_arg_flag ( "--help" ) || has_arg_flag ( "-h" ) {
615- show_help ( ) ;
616- return ;
617- }
618- if has_arg_flag ( "--version" ) || has_arg_flag ( "-V" ) {
619- show_version ( ) ;
620- return ;
621- }
622-
623630 // Rustc does not support non-UTF-8 arguments so we make no attempt either.
624631 // (We do support non-UTF-8 environment variables though.)
625632 let mut args = std:: env:: args ( ) ;
0 commit comments