about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDylan DPC <99973273+Dylan-DPC@users.noreply.github.com>2022-09-14 19:26:21 +0530
committerGitHub <noreply@github.com>2022-09-14 19:26:21 +0530
commit94bc08d94f13ea28be22972de014f860b06d799d (patch)
treefd31e49038f05ca81082b41e32f2af2b7f8406a5
parentdce471582a575c905be208d19fcda654207a5233 (diff)
parent3a38d566bd222981b3292ba9d6870340a6d26958 (diff)
downloadrust-94bc08d94f13ea28be22972de014f860b06d799d.tar.gz
rust-94bc08d94f13ea28be22972de014f860b06d799d.zip
Rollup merge of #101772 - est31:replace_placeholder_diagnostics, r=jackh726
Also replace the placeholder for the stable_features lint

Follow up of  #101215 and #100591 .

Fixes #101766
-rw-r--r--compiler/rustc_attr/src/builtin.rs10
-rw-r--r--compiler/rustc_passes/src/lib_features.rs6
-rw-r--r--compiler/rustc_passes/src/stability.rs13
3 files changed, 20 insertions, 9 deletions
diff --git a/compiler/rustc_attr/src/builtin.rs b/compiler/rustc_attr/src/builtin.rs
index bb972a18acb..753f62dd589 100644
--- a/compiler/rustc_attr/src/builtin.rs
+++ b/compiler/rustc_attr/src/builtin.rs
@@ -21,6 +21,12 @@ use crate::session_diagnostics::{self, IncorrectReprFormatGenericCause};
 /// For more, see [this pull request](https://github.com/rust-lang/rust/pull/100591).
 pub const VERSION_PLACEHOLDER: &str = "CURRENT_RUSTC_VERSION";
 
+pub fn rust_version_symbol() -> Symbol {
+    let version = option_env!("CFG_VERSION").unwrap_or("<current>");
+    let version = version.split(' ').next().unwrap();
+    Symbol::intern(&version)
+}
+
 pub fn is_builtin_attr(attr: &Attribute) -> bool {
     attr.is_doc_comment() || attr.ident().filter(|ident| is_builtin_attr_name(ident.name)).is_some()
 }
@@ -495,9 +501,7 @@ where
                     }
 
                     if let Some(s) = since && s.as_str() == VERSION_PLACEHOLDER {
-                        let version = option_env!("CFG_VERSION").unwrap_or("<current>");
-                        let version = version.split(' ').next().unwrap();
-                        since = Some(Symbol::intern(&version));
+                        since = Some(rust_version_symbol());
                     }
 
                     match (feature, since) {
diff --git a/compiler/rustc_passes/src/lib_features.rs b/compiler/rustc_passes/src/lib_features.rs
index 5aac6943eef..04173c792a9 100644
--- a/compiler/rustc_passes/src/lib_features.rs
+++ b/compiler/rustc_passes/src/lib_features.rs
@@ -5,7 +5,7 @@
 //! collect them instead.
 
 use rustc_ast::{Attribute, MetaItemKind};
-use rustc_attr::VERSION_PLACEHOLDER;
+use rustc_attr::{rust_version_symbol, VERSION_PLACEHOLDER};
 use rustc_errors::struct_span_err;
 use rustc_hir::intravisit::Visitor;
 use rustc_middle::hir::nested_filter;
@@ -57,9 +57,7 @@ impl<'tcx> LibFeatureCollector<'tcx> {
                 }
 
                 if let Some(s) = since && s.as_str() == VERSION_PLACEHOLDER {
-                    let version = option_env!("CFG_VERSION").unwrap_or("<current>");
-                    let version = version.split(' ').next().unwrap();
-                    since = Some(Symbol::intern(&version));
+                    since = Some(rust_version_symbol());
                 }
 
                 if let Some(feature) = feature {
diff --git a/compiler/rustc_passes/src/stability.rs b/compiler/rustc_passes/src/stability.rs
index a24b191aebf..9ba1276099d 100644
--- a/compiler/rustc_passes/src/stability.rs
+++ b/compiler/rustc_passes/src/stability.rs
@@ -2,7 +2,8 @@
 //! propagating default levels lexically from parent to children ast nodes.
 
 use rustc_attr::{
-    self as attr, ConstStability, Stability, StabilityLevel, Unstable, UnstableReason,
+    self as attr, rust_version_symbol, ConstStability, Stability, StabilityLevel, Unstable,
+    UnstableReason, VERSION_PLACEHOLDER,
 };
 use rustc_data_structures::fx::{FxHashMap, FxHashSet, FxIndexMap};
 use rustc_errors::{struct_span_err, Applicability};
@@ -1106,7 +1107,15 @@ fn unnecessary_partially_stable_feature_lint(
     });
 }
 
-fn unnecessary_stable_feature_lint(tcx: TyCtxt<'_>, span: Span, feature: Symbol, since: Symbol) {
+fn unnecessary_stable_feature_lint(
+    tcx: TyCtxt<'_>,
+    span: Span,
+    feature: Symbol,
+    mut since: Symbol,
+) {
+    if since.as_str() == VERSION_PLACEHOLDER {
+        since = rust_version_symbol();
+    }
     tcx.struct_span_lint_hir(lint::builtin::STABLE_FEATURES, hir::CRATE_HIR_ID, span, |lint| {
         lint.build(&format!(
             "the feature `{feature}` has been stable since {since} and no longer requires an \