diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b2964e046e..8d965ae8fc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -171,7 +171,8 @@ to `.vscode/settings.json` in your local Miri clone: "env", "MIRI_AUTO_OPS=no", "./miri", - "check", + "cargo", + "clippy", // make this `check` when working with a locally built rustc "--message-format=json" ], // Contrary to what the name suggests, this also affects proc macros. @@ -179,6 +180,7 @@ to `.vscode/settings.json` in your local Miri clone: "env", "MIRI_AUTO_OPS=no", "./miri", + "cargo", "check", "--message-format=json", ], diff --git a/cargo-miri/miri b/cargo-miri/miri index ed8c80b33f..cf3ad06788 100755 --- a/cargo-miri/miri +++ b/cargo-miri/miri @@ -1,3 +1,4 @@ #!/bin/sh -# Hack to work around https://github.com/rust-analyzer/rust-analyzer/issues/10793. +# RA invokes `./miri cargo ...` for each workspace, so we need to forward that to the main `miri` +# script. See . exec "$(dirname "$0")"/../miri "$@" diff --git a/miri b/miri index 5088a9ceff..a72fe91f59 100755 --- a/miri +++ b/miri @@ -29,6 +29,10 @@ Format all sources and tests. are passed to `rustfmt`. ./miri clippy : Runs clippy on all sources. are passed to `cargo clippy`. +./miri cargo : +Runs just `cargo ` with the Miri-specific environment variables. +Mainly meant to be invoked by rust-analyzer. + ./miri many-seeds : Runs over and over again with different seeds for Miri. The MIRIFLAGS variable is set to its original value appended with ` -Zmiri-seed=$SEED` for @@ -44,7 +48,7 @@ MIRI_SYSROOT: If already set, the "sysroot setup" step is skipped. CARGO_EXTRA_FLAGS: -Pass extra flags to all cargo invocations. +Pass extra flags to all cargo invocations. (Ignored by `./miri cargo`.) EOF ) @@ -218,6 +222,11 @@ clippy) $CARGO clippy $CARGO_EXTRA_FLAGS --manifest-path "$MIRIDIR"/ui_test/Cargo.toml --all-targets "$@" $CARGO clippy $CARGO_EXTRA_FLAGS --manifest-path "$MIRIDIR"/cargo-miri/Cargo.toml "$@" ;; +cargo) + # We carefully kept the working dir intact, so this will run cargo *on the workspace in the + # current working dir*, not on the main Miri workspace. That is exactly what RA needs. + $CARGO "$@" + ;; *) if [ -n "$COMMAND" ]; then echo "Unknown command: $COMMAND"