Skip to content

Commit

Permalink
Auto merge of #13328 - Veykril:rustc-proc-macro, r=Veykril
Browse files Browse the repository at this point in the history
Add proc-macro dependency to rustc crates
  • Loading branch information
bors committed Oct 1, 2022
2 parents cdc5493 + 870825b commit 5c28ad1
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions crates/project-model/src/workspace.rs
Expand Up @@ -717,6 +717,7 @@ fn cargo_to_crate_graph(
load_proc_macro,
&mut pkg_to_lib_crate,
&public_deps,
libproc_macro,
cargo,
&pkg_crates,
build_scripts,
Expand Down Expand Up @@ -782,6 +783,7 @@ fn handle_rustc_crates(
load_proc_macro: &mut dyn FnMut(&str, &AbsPath) -> ProcMacroLoadResult,
pkg_to_lib_crate: &mut FxHashMap<Package, CrateId>,
public_deps: &SysrootPublicDeps,
libproc_macro: Option<CrateId>,
cargo: &CargoWorkspace,
pkg_crates: &FxHashMap<Package, Vec<(CrateId, TargetKind)>>,
build_scripts: &WorkspaceBuildScripts,
Expand Down Expand Up @@ -843,6 +845,19 @@ fn handle_rustc_crates(
rustc_workspace[tgt].is_proc_macro,
);
pkg_to_lib_crate.insert(pkg, crate_id);

// Even crates that don't set proc-macro = true are allowed to depend on proc_macro
// (just none of the APIs work when called outside of a proc macro).
if let Some(proc_macro) = libproc_macro {
add_dep_with_prelude(
crate_graph,
crate_id,
CrateName::new("proc_macro").unwrap(),
proc_macro,
cargo[tgt].is_proc_macro,
);
}

// Add dependencies on core / std / alloc for this crate
public_deps.add(crate_id, crate_graph);
rustc_pkg_crates.entry(pkg).or_insert_with(Vec::new).push(crate_id);
Expand Down

0 comments on commit 5c28ad1

Please sign in to comment.