diff --git a/crates/rustc_plugin/src/cli.rs b/crates/rustc_plugin/src/cli.rs index 4921b0bca..5f1a54131 100644 --- a/crates/rustc_plugin/src/cli.rs +++ b/crates/rustc_plugin/src/cli.rs @@ -42,8 +42,13 @@ pub fn cli_main(plugin: T) -> ExitCode { path.set_extension("exe"); } + let wrapper = match args.filter { + CrateFilter::AllCrates => "RUSTC_WRAPPER", + _ => "RUSTC_WORKSPACE_WRAPPER", + }; + cmd - .env("RUSTC_WORKSPACE_WRAPPER", path) + .env(wrapper, path) .args(["check", "--target-dir"]) .arg(&target_dir); diff --git a/crates/rustc_plugin/tests/test_example.rs b/crates/rustc_plugin/tests/test_example.rs index 11986dd33..33ec74753 100644 --- a/crates/rustc_plugin/tests/test_example.rs +++ b/crates/rustc_plugin/tests/test_example.rs @@ -89,3 +89,13 @@ fn multi() -> Result<()> { run("workspaces/multi", |_cmd| {})?; Ok(()) } + +#[test] +fn dependency() -> Result<()> { + let output = run("workspaces/deps", |_cmd| {})?; + assert!( + output.contains(r#"There is an item "mul" of type "function""#), + "output:\n{output}" + ); + Ok(()) +} diff --git a/crates/rustc_plugin/tests/workspaces/deps/Cargo.toml b/crates/rustc_plugin/tests/workspaces/deps/Cargo.toml new file mode 100644 index 000000000..e162ab74d --- /dev/null +++ b/crates/rustc_plugin/tests/workspaces/deps/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "deps" +version = "0.1.0" +edition = "2024" + +[dependencies] +dep = { path = "dep" } diff --git a/crates/rustc_plugin/tests/workspaces/deps/dep/Cargo.toml b/crates/rustc_plugin/tests/workspaces/deps/dep/Cargo.toml new file mode 100644 index 000000000..ea6870cf7 --- /dev/null +++ b/crates/rustc_plugin/tests/workspaces/deps/dep/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "dep" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/crates/rustc_plugin/tests/workspaces/deps/dep/src/lib.rs b/crates/rustc_plugin/tests/workspaces/deps/dep/src/lib.rs new file mode 100644 index 000000000..1e7ff97e4 --- /dev/null +++ b/crates/rustc_plugin/tests/workspaces/deps/dep/src/lib.rs @@ -0,0 +1,3 @@ +pub fn mul(left: usize, right: usize) -> usize { + left * right +} diff --git a/crates/rustc_plugin/tests/workspaces/deps/src/lib.rs b/crates/rustc_plugin/tests/workspaces/deps/src/lib.rs new file mode 100644 index 000000000..efdaa45d7 --- /dev/null +++ b/crates/rustc_plugin/tests/workspaces/deps/src/lib.rs @@ -0,0 +1,3 @@ +pub fn square(x: usize) -> usize { + dep::mul(x, x) +}