about summary refs log tree commit diff
path: root/compiler/rustc_middle/src/middle/mod.rs
diff options
context:
space:
mode:
authorDavid Wood <david.wood@huawei.com>2022-07-20 14:52:23 +0100
committerDavid Wood <david.wood@huawei.com>2022-07-20 15:50:59 +0100
commite5872990d13abb088397e23b226439b1b4926b91 (patch)
treea19bcf24a2ac63980e5638db5101d204a0abd81f /compiler/rustc_middle/src/middle/mod.rs
parent6246d66c6da3064f658831c0ed8162df169a001e (diff)
downloadrust-e5872990d13abb088397e23b226439b1b4926b91.tar.gz
rust-e5872990d13abb088397e23b226439b1b4926b91.zip
passes: check implied feature exists
Add a check confirming that features referenced in `implied_by` meta
items actually exist.

Signed-off-by: David Wood <david.wood@huawei.com>
Diffstat (limited to 'compiler/rustc_middle/src/middle/mod.rs')
-rw-r--r--compiler/rustc_middle/src/middle/mod.rs14
1 files changed, 7 insertions, 7 deletions
diff --git a/compiler/rustc_middle/src/middle/mod.rs b/compiler/rustc_middle/src/middle/mod.rs
index fc35cafcc77..8dc68b1f5a8 100644
--- a/compiler/rustc_middle/src/middle/mod.rs
+++ b/compiler/rustc_middle/src/middle/mod.rs
@@ -3,14 +3,14 @@ pub mod dependency_format;
 pub mod exported_symbols;
 pub mod lang_items;
 pub mod lib_features {
-    use rustc_data_structures::fx::{FxHashMap, FxHashSet};
-    use rustc_span::symbol::Symbol;
+    use rustc_data_structures::fx::FxHashMap;
+    use rustc_span::{symbol::Symbol, Span};
 
     #[derive(HashStable, Debug)]
     pub struct LibFeatures {
-        // A map from feature to stabilisation version.
-        pub stable: FxHashMap<Symbol, Symbol>,
-        pub unstable: FxHashSet<Symbol>,
+        /// A map from feature to stabilisation version.
+        pub stable: FxHashMap<Symbol, (Symbol, Span)>,
+        pub unstable: FxHashMap<Symbol, Span>,
     }
 
     impl LibFeatures {
@@ -18,8 +18,8 @@ pub mod lib_features {
             let mut all_features: Vec<_> = self
                 .stable
                 .iter()
-                .map(|(f, s)| (*f, Some(*s)))
-                .chain(self.unstable.iter().map(|f| (*f, None)))
+                .map(|(f, (s, _))| (*f, Some(*s)))
+                .chain(self.unstable.iter().map(|(f, _)| (*f, None)))
                 .collect();
             all_features.sort_unstable_by(|a, b| a.0.as_str().partial_cmp(b.0.as_str()).unwrap());
             all_features