aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_project_model/src/project_json.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_project_model/src/project_json.rs')
-rw-r--r--crates/ra_project_model/src/project_json.rs23
1 files changed, 6 insertions, 17 deletions
diff --git a/crates/ra_project_model/src/project_json.rs b/crates/ra_project_model/src/project_json.rs
index e9a333191..e3f3163f6 100644
--- a/crates/ra_project_model/src/project_json.rs
+++ b/crates/ra_project_model/src/project_json.rs
@@ -3,11 +3,11 @@
3use std::path::PathBuf; 3use std::path::PathBuf;
4 4
5use paths::{AbsPath, AbsPathBuf}; 5use paths::{AbsPath, AbsPathBuf};
6use ra_cfg::CfgOptions;
7use ra_db::{CrateId, CrateName, Dependency, Edition}; 6use ra_db::{CrateId, CrateName, Dependency, Edition};
8use rustc_hash::{FxHashMap, FxHashSet}; 7use rustc_hash::FxHashMap;
9use serde::{de, Deserialize}; 8use serde::{de, Deserialize};
10use stdx::split_delim; 9
10use crate::cfg_flag::CfgFlag;
11 11
12/// Roots and crates that compose this Rust project. 12/// Roots and crates that compose this Rust project.
13#[derive(Clone, Debug, Eq, PartialEq)] 13#[derive(Clone, Debug, Eq, PartialEq)]
@@ -22,7 +22,7 @@ pub struct Crate {
22 pub(crate) root_module: AbsPathBuf, 22 pub(crate) root_module: AbsPathBuf,
23 pub(crate) edition: Edition, 23 pub(crate) edition: Edition,
24 pub(crate) deps: Vec<Dependency>, 24 pub(crate) deps: Vec<Dependency>,
25 pub(crate) cfg: CfgOptions, 25 pub(crate) cfg: Vec<CfgFlag>,
26 pub(crate) target: Option<String>, 26 pub(crate) target: Option<String>,
27 pub(crate) env: FxHashMap<String, String>, 27 pub(crate) env: FxHashMap<String, String>,
28 pub(crate) proc_macro_dylib_path: Option<AbsPathBuf>, 28 pub(crate) proc_macro_dylib_path: Option<AbsPathBuf>,
@@ -65,18 +65,7 @@ impl ProjectJson {
65 name: dep_data.name, 65 name: dep_data.name,
66 }) 66 })
67 .collect::<Vec<_>>(), 67 .collect::<Vec<_>>(),
68 cfg: { 68 cfg: crate_data.cfg,
69 let mut cfg = CfgOptions::default();
70 for entry in &crate_data.cfg {
71 match split_delim(entry, '=') {
72 Some((key, value)) => {
73 cfg.insert_key_value(key.into(), value.into());
74 }
75 None => cfg.insert_atom(entry.into()),
76 }
77 }
78 cfg
79 },
80 target: crate_data.target, 69 target: crate_data.target,
81 env: crate_data.env, 70 env: crate_data.env,
82 proc_macro_dylib_path: crate_data 71 proc_macro_dylib_path: crate_data
@@ -103,7 +92,7 @@ struct CrateData {
103 edition: EditionData, 92 edition: EditionData,
104 deps: Vec<DepData>, 93 deps: Vec<DepData>,
105 #[serde(default)] 94 #[serde(default)]
106 cfg: FxHashSet<String>, 95 cfg: Vec<CfgFlag>,
107 target: Option<String>, 96 target: Option<String>,
108 #[serde(default)] 97 #[serde(default)]
109 env: FxHashMap<String, String>, 98 env: FxHashMap<String, String>,