Rollup merge of #118639 - fmease:deny-features-in-stable-rustc-crates, r=WaffleLapkin
Undeprecate lint `unstable_features` and make use of it in the compiler See also #117937. r? compiler
This commit is contained in:
commit
a54c295665
@ -20,8 +20,9 @@
|
|||||||
//! [`rustc_parse::lexer`]: ../rustc_parse/lexer/index.html
|
//! [`rustc_parse::lexer`]: ../rustc_parse/lexer/index.html
|
||||||
#![deny(rustc::untranslatable_diagnostic)]
|
#![deny(rustc::untranslatable_diagnostic)]
|
||||||
#![deny(rustc::diagnostic_outside_of_impl)]
|
#![deny(rustc::diagnostic_outside_of_impl)]
|
||||||
// We want to be able to build this crate with a stable compiler, so no
|
// We want to be able to build this crate with a stable compiler,
|
||||||
// `#![feature]` attributes should be added.
|
// so no `#![feature]` attributes should be added.
|
||||||
|
#![deny(unstable_features)]
|
||||||
|
|
||||||
mod cursor;
|
mod cursor;
|
||||||
pub mod unescape;
|
pub mod unescape;
|
||||||
|
@ -148,7 +148,7 @@ lint_builtin_unsafe_impl = implementation of an `unsafe` trait
|
|||||||
|
|
||||||
lint_builtin_unsafe_trait = declaration of an `unsafe` trait
|
lint_builtin_unsafe_trait = declaration of an `unsafe` trait
|
||||||
|
|
||||||
lint_builtin_unstable_features = unstable feature
|
lint_builtin_unstable_features = use of an unstable feature
|
||||||
|
|
||||||
lint_builtin_unused_doc_comment = unused doc comment
|
lint_builtin_unused_doc_comment = unused doc comment
|
||||||
.label = rustdoc does not generate documentation for {$kind}
|
.label = rustdoc does not generate documentation for {$kind}
|
||||||
|
@ -1233,10 +1233,30 @@ fn def_id_is_transmute(cx: &LateContext<'_>, def_id: DefId) -> bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
declare_lint! {
|
declare_lint! {
|
||||||
/// The `unstable_features` is deprecated and should no longer be used.
|
/// The `unstable_features` lint detects uses of `#![feature]`.
|
||||||
|
///
|
||||||
|
/// ### Example
|
||||||
|
///
|
||||||
|
/// ```rust,compile_fail
|
||||||
|
/// #![deny(unstable_features)]
|
||||||
|
/// #![feature(test)]
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// {{produces}}
|
||||||
|
///
|
||||||
|
/// ### Explanation
|
||||||
|
///
|
||||||
|
/// In larger nightly-based projects which
|
||||||
|
///
|
||||||
|
/// * consist of a multitude of crates where a subset of crates has to compile on
|
||||||
|
/// stable either unconditionally or depending on a `cfg` flag to for example
|
||||||
|
/// allow stable users to depend on them,
|
||||||
|
/// * don't use nightly for experimental features but for, e.g., unstable options only,
|
||||||
|
///
|
||||||
|
/// this lint may come in handy to enforce policies of these kinds.
|
||||||
UNSTABLE_FEATURES,
|
UNSTABLE_FEATURES,
|
||||||
Allow,
|
Allow,
|
||||||
"enabling unstable features (deprecated. do not use)"
|
"enabling unstable features"
|
||||||
}
|
}
|
||||||
|
|
||||||
declare_lint_pass!(
|
declare_lint_pass!(
|
||||||
@ -1246,15 +1266,15 @@ fn def_id_is_transmute(cx: &LateContext<'_>, def_id: DefId) -> bool {
|
|||||||
|
|
||||||
impl<'tcx> LateLintPass<'tcx> for UnstableFeatures {
|
impl<'tcx> LateLintPass<'tcx> for UnstableFeatures {
|
||||||
fn check_attribute(&mut self, cx: &LateContext<'_>, attr: &ast::Attribute) {
|
fn check_attribute(&mut self, cx: &LateContext<'_>, attr: &ast::Attribute) {
|
||||||
if attr.has_name(sym::feature) {
|
if attr.has_name(sym::feature)
|
||||||
if let Some(items) = attr.meta_item_list() {
|
&& let Some(items) = attr.meta_item_list()
|
||||||
|
{
|
||||||
for item in items {
|
for item in items {
|
||||||
cx.emit_spanned_lint(UNSTABLE_FEATURES, item.span(), BuiltinUnstableFeatures);
|
cx.emit_spanned_lint(UNSTABLE_FEATURES, item.span(), BuiltinUnstableFeatures);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
declare_lint! {
|
declare_lint! {
|
||||||
/// The `ungated_async_fn_track_caller` lint warns when the
|
/// The `ungated_async_fn_track_caller` lint warns when the
|
||||||
|
@ -11,8 +11,9 @@
|
|||||||
)]
|
)]
|
||||||
#![deny(rustc::untranslatable_diagnostic)]
|
#![deny(rustc::untranslatable_diagnostic)]
|
||||||
#![deny(rustc::diagnostic_outside_of_impl)]
|
#![deny(rustc::diagnostic_outside_of_impl)]
|
||||||
// WARNING: We want to be able to build this crate with a stable compiler,
|
// We want to be able to build this crate with a stable compiler,
|
||||||
// so no `#![feature]` attributes should be added!
|
// so no `#![feature]` attributes should be added.
|
||||||
|
#![deny(unstable_features)]
|
||||||
|
|
||||||
use rustc_lexer::unescape;
|
use rustc_lexer::unescape;
|
||||||
pub use Alignment::*;
|
pub use Alignment::*;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: unstable feature
|
error: use of an unstable feature
|
||||||
--> $DIR/feature-gate-feature-gate.rs:2:12
|
--> $DIR/feature-gate-feature-gate.rs:2:12
|
||||||
|
|
|
|
||||||
LL | #![feature(intrinsics)]
|
LL | #![feature(intrinsics)]
|
||||||
|
Loading…
Reference in New Issue
Block a user