diff options
| -rw-r--r-- | src/librustc/middle/lib_features.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/librustc/middle/lib_features.rs b/src/librustc/middle/lib_features.rs index 27bd69f04fd..e451cf5cfa1 100644 --- a/src/librustc/middle/lib_features.rs +++ b/src/librustc/middle/lib_features.rs @@ -101,6 +101,21 @@ impl<'a, 'tcx> LibFeatureCollector<'a, 'tcx> { match (since, already_in_stable, already_in_unstable) { (Some(since), _, false) => { + if let Some(prev_since) = self.lib_features.stable.get(&feature) { + if *prev_since != since { + let msg = format!( + "feature `{}` is declared stable since {}, \ + but was previously declared stable since {}", + feature, + since, + prev_since, + ); + self.tcx.sess.struct_span_err_with_code(span, &msg, + DiagnosticId::Error("E0711".into())).emit(); + return; + } + } + self.lib_features.stable.insert(feature, since); } (None, false, _) => { |
