diff options
Diffstat (limited to 'crates/ra_project_model/src/json_project.rs')
-rw-r--r-- | crates/ra_project_model/src/json_project.rs | 42 |
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 | ||
3 | use std::path::PathBuf; | 3 | use std::path::PathBuf; |
4 | 4 | ||
5 | use rustc_hash::{FxHashMap, FxHashSet}; | 5 | use rustc_hash::FxHashSet; |
6 | use serde::Deserialize; | 6 | use 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 | } |