4370: Move feature desugaring to the right abstraction layer r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
bors[bot] 2020-05-08 00:57:29 +00:00 committed by GitHub
commit 6f2f9049da
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 18 deletions

View file

@ -2,8 +2,6 @@
mod cfg_expr;
use std::iter::IntoIterator;
use ra_syntax::SmolStr;
use rustc_hash::FxHashSet;
@ -48,18 +46,4 @@ impl CfgOptions {
pub fn insert_key_value(&mut self, key: SmolStr, value: SmolStr) {
self.key_values.insert((key, value));
}
/// Shortcut to set features
pub fn insert_features(&mut self, iter: impl IntoIterator<Item = SmolStr>) {
iter.into_iter().for_each(|feat| self.insert_key_value("feature".into(), feat));
}
/// Shortcut to set cfgs
pub fn insert_cfgs(&mut self, iter: impl IntoIterator<Item = SmolStr>) {
iter.into_iter().for_each(|cfg| match cfg.find('=') {
Some(split) => self
.insert_key_value(cfg[0..split].into(), cfg[split + 1..].trim_matches('"').into()),
None => self.insert_atom(cfg),
});
}
}

View file

@ -398,8 +398,18 @@ impl ProjectWorkspace {
let edition = cargo[pkg].edition;
let cfg_options = {
let mut opts = default_cfg_options.clone();
opts.insert_features(cargo[pkg].features.iter().map(Into::into));
opts.insert_cfgs(cargo[pkg].cfgs.iter().map(Into::into));
for feature in cargo[pkg].features.iter() {
opts.insert_key_value("feature".into(), feature.into());
}
for cfg in cargo[pkg].cfgs.iter() {
match cfg.find('=') {
Some(split) => opts.insert_key_value(
cfg[..split].into(),
cfg[split + 1..].trim_matches('"').into(),
),
None => opts.insert_atom(cfg.into()),
};
}
opts
};
let mut env = Env::default();