aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_project_model/src/json_project.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_project_model/src/json_project.rs')
-rw-r--r--crates/ra_project_model/src/json_project.rs42
1 files changed, 1 insertions, 41 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}