mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 21:43:37 +00:00
Only apply cfg(test)
for local crates
Don't analyze dependencies with `test`; this should fix various cases where crates use `cfg(not(test))` and so we didn't find things. "Local" here currently means anything that's not from the registry, so anything inside the workspace, but also path dependencies. So this isn't perfect, and users might still need to use `rust-analyzer.cargo.unsetTest` for these in some cases.
This commit is contained in:
parent
427061da19
commit
98a58114a4
1 changed files with 7 additions and 2 deletions
|
@ -541,8 +541,6 @@ fn cargo_to_crate_graph(
|
|||
|
||||
let mut pkg_to_lib_crate = FxHashMap::default();
|
||||
|
||||
// Add test cfg for non-sysroot crates
|
||||
cfg_options.insert_atom("test".into());
|
||||
cfg_options.insert_atom("debug_assertions".into());
|
||||
|
||||
let mut pkg_crates = FxHashMap::default();
|
||||
|
@ -558,6 +556,13 @@ fn cargo_to_crate_graph(
|
|||
CfgOverrides::Selective(cfg_overrides) => cfg_overrides.get(&cargo[pkg].name),
|
||||
};
|
||||
|
||||
// Add test cfg for local crates
|
||||
if cargo[pkg].is_local {
|
||||
replaced_cfg_options = cfg_options.clone();
|
||||
replaced_cfg_options.insert_atom("test".into());
|
||||
cfg_options = &replaced_cfg_options;
|
||||
}
|
||||
|
||||
if let Some(overrides) = overrides {
|
||||
// FIXME: this is sort of a hack to deal with #![cfg(not(test))] vanishing such as seen
|
||||
// in ed25519_dalek (#7243), and libcore (#9203) (although you only hit that one while
|
||||
|
|
Loading…
Reference in a new issue