diff options
author | uHOOCCOOHu <[email protected]> | 2019-10-02 19:02:53 +0100 |
---|---|---|
committer | uHOOCCOOHu <[email protected]> | 2019-10-02 19:28:03 +0100 |
commit | 1067a1c5f649cc206e35b427eaa8d6553280cc96 (patch) | |
tree | e55b3e9ad4b2ece335f5660712918b6b97390bd3 /crates/ra_project_model/src/cargo_workspace.rs | |
parent | e0100e63ae2e873f119b905ac77c3355ffb351b0 (diff) |
Read default cfgs from rustc
Diffstat (limited to 'crates/ra_project_model/src/cargo_workspace.rs')
-rw-r--r-- | crates/ra_project_model/src/cargo_workspace.rs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/crates/ra_project_model/src/cargo_workspace.rs b/crates/ra_project_model/src/cargo_workspace.rs index 805eaa178..28dadea9d 100644 --- a/crates/ra_project_model/src/cargo_workspace.rs +++ b/crates/ra_project_model/src/cargo_workspace.rs | |||
@@ -39,6 +39,7 @@ struct PackageData { | |||
39 | is_member: bool, | 39 | is_member: bool, |
40 | dependencies: Vec<PackageDependency>, | 40 | dependencies: Vec<PackageDependency>, |
41 | edition: Edition, | 41 | edition: Edition, |
42 | features: Vec<String>, | ||
42 | } | 43 | } |
43 | 44 | ||
44 | #[derive(Debug, Clone)] | 45 | #[derive(Debug, Clone)] |
@@ -91,6 +92,9 @@ impl Package { | |||
91 | pub fn edition(self, ws: &CargoWorkspace) -> Edition { | 92 | pub fn edition(self, ws: &CargoWorkspace) -> Edition { |
92 | ws.packages[self].edition | 93 | ws.packages[self].edition |
93 | } | 94 | } |
95 | pub fn features(self, ws: &CargoWorkspace) -> &[String] { | ||
96 | &ws.packages[self].features | ||
97 | } | ||
94 | pub fn targets<'a>(self, ws: &'a CargoWorkspace) -> impl Iterator<Item = Target> + 'a { | 98 | pub fn targets<'a>(self, ws: &'a CargoWorkspace) -> impl Iterator<Item = Target> + 'a { |
95 | ws.packages[self].targets.iter().cloned() | 99 | ws.packages[self].targets.iter().cloned() |
96 | } | 100 | } |
@@ -144,6 +148,7 @@ impl CargoWorkspace { | |||
144 | is_member, | 148 | is_member, |
145 | edition: Edition::from_string(&meta_pkg.edition), | 149 | edition: Edition::from_string(&meta_pkg.edition), |
146 | dependencies: Vec::new(), | 150 | dependencies: Vec::new(), |
151 | features: Vec::new(), | ||
147 | }); | 152 | }); |
148 | let pkg_data = &mut packages[pkg]; | 153 | let pkg_data = &mut packages[pkg]; |
149 | pkg_by_id.insert(meta_pkg.id.clone(), pkg); | 154 | pkg_by_id.insert(meta_pkg.id.clone(), pkg); |
@@ -164,6 +169,7 @@ impl CargoWorkspace { | |||
164 | let dep = PackageDependency { name: dep_node.name, pkg: pkg_by_id[&dep_node.pkg] }; | 169 | let dep = PackageDependency { name: dep_node.name, pkg: pkg_by_id[&dep_node.pkg] }; |
165 | packages[source].dependencies.push(dep); | 170 | packages[source].dependencies.push(dep); |
166 | } | 171 | } |
172 | packages[source].features.extend(node.features); | ||
167 | } | 173 | } |
168 | 174 | ||
169 | Ok(CargoWorkspace { packages, targets, workspace_root: meta.workspace_root }) | 175 | Ok(CargoWorkspace { packages, targets, workspace_root: meta.workspace_root }) |