aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_project_model/src
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2020-06-09 09:48:56 +0100
committerGitHub <[email protected]>2020-06-09 09:48:56 +0100
commit7ae2228039819b7a8f2ef74c9e607ff35d121ee3 (patch)
tree66209571f96a59d425cfc0f22c4398283498f00d /crates/ra_project_model/src
parent733ef3163c7423d8307d2df4503c08870b5a35b7 (diff)
parent055b9b64bce2808ed31eb4547cea16ec282d6897 (diff)
Merge #4805
4805: Finish JsonProject transition to cfgs from the separate atoms and features. r=matklad a=woody77 Here's the rest of the transition. Co-authored-by: Aaron Wood <[email protected]>
Diffstat (limited to 'crates/ra_project_model/src')
-rw-r--r--crates/ra_project_model/src/json_project.rs42
-rw-r--r--crates/ra_project_model/src/lib.rs6
2 files changed, 1 insertions, 47 deletions
diff --git a/crates/ra_project_model/src/json_project.rs b/crates/ra_project_model/src/json_project.rs
index 09c06fef9..ee2de4c25 100644
--- a/crates/ra_project_model/src/json_project.rs
+++ b/crates/ra_project_model/src/json_project.rs
@@ -2,7 +2,7 @@
2 2
3use std::path::PathBuf; 3use std::path::PathBuf;
4 4
5use rustc_hash::{FxHashMap, FxHashSet}; 5use rustc_hash::FxHashSet;
6use serde::Deserialize; 6use serde::Deserialize;
7 7
8/// Roots and crates that compose this Rust project. 8/// Roots and crates that compose this Rust project.
@@ -28,16 +28,9 @@ pub struct Crate {
28 pub(crate) edition: Edition, 28 pub(crate) edition: Edition,
29 pub(crate) deps: Vec<Dep>, 29 pub(crate) deps: Vec<Dep>,
30 30
31 // This is the preferred method of providing cfg options.
32 #[serde(default)] 31 #[serde(default)]
33 pub(crate) cfg: FxHashSet<String>, 32 pub(crate) cfg: FxHashSet<String>,
34 33
35 // These two are here for transition only.
36 #[serde(default)]
37 pub(crate) atom_cfgs: FxHashSet<String>,
38 #[serde(default)]
39 pub(crate) key_value_cfgs: FxHashMap<String, String>,
40
41 pub(crate) out_dir: Option<PathBuf>, 34 pub(crate) out_dir: Option<PathBuf>,
42 pub(crate) proc_macro_dylib_path: Option<PathBuf>, 35 pub(crate) proc_macro_dylib_path: Option<PathBuf>,
43} 36}
@@ -99,37 +92,4 @@ mod tests {
99 assert!(krate.cfg.contains(&"feature=feature_2".to_string())); 92 assert!(krate.cfg.contains(&"feature=feature_2".to_string()));
100 assert!(krate.cfg.contains(&"other=value".to_string())); 93 assert!(krate.cfg.contains(&"other=value".to_string()));
101 } 94 }
102
103 #[test]
104 fn test_crate_deserialization_old_json() {
105 let raw_json = json!( {
106 "crate_id": 2,
107 "root_module": "this/is/a/file/path.rs",
108 "deps": [
109 {
110 "crate": 1,
111 "name": "some_dep_crate"
112 },
113 ],
114 "edition": "2015",
115 "atom_cfgs": [
116 "atom_1",
117 "atom_2",
118 ],
119 "key_value_cfgs": {
120 "feature": "feature_1",
121 "feature": "feature_2",
122 "other": "value",
123 },
124 });
125
126 let krate: Crate = serde_json::from_value(raw_json).unwrap();
127
128 assert!(krate.atom_cfgs.contains(&"atom_1".to_string()));
129 assert!(krate.atom_cfgs.contains(&"atom_2".to_string()));
130 assert!(krate.key_value_cfgs.contains_key(&"feature".to_string()));
131 assert_eq!(krate.key_value_cfgs.get("feature"), Some(&"feature_2".to_string()));
132 assert!(krate.key_value_cfgs.contains_key(&"other".to_string()));
133 assert_eq!(krate.key_value_cfgs.get("other"), Some(&"value".to_string()));
134 }
135} 95}
diff --git a/crates/ra_project_model/src/lib.rs b/crates/ra_project_model/src/lib.rs
index fe03b509e..47fa34ddf 100644
--- a/crates/ra_project_model/src/lib.rs
+++ b/crates/ra_project_model/src/lib.rs
@@ -280,12 +280,6 @@ impl ProjectWorkspace {
280 } 280 }
281 } 281 }
282 } 282 }
283 for name in &krate.atom_cfgs {
284 opts.insert_atom(name.into());
285 }
286 for (key, value) in &krate.key_value_cfgs {
287 opts.insert_key_value(key.into(), value.into());
288 }
289 opts 283 opts
290 }; 284 };
291 285