Don't mark ineffective_unstable_trait_impl
as an internal lint
It's not an internal lint: - It's not in the rustc::internal lint group - It's on unconditionally, because it actually lints `staged_api`, not the compiler This fixes a bug where `#[deny(rustc::internal)]` would warn that `rustc::internal` was an unknown lint.
This commit is contained in:
parent
5053db7c00
commit
c819a4c025
4 changed files with 30 additions and 7 deletions
|
@ -4,7 +4,7 @@
|
||||||
//! compiler code, rather than using their own custom pass. Those
|
//! compiler code, rather than using their own custom pass. Those
|
||||||
//! lints are all available in `rustc_lint::builtin`.
|
//! lints are all available in `rustc_lint::builtin`.
|
||||||
|
|
||||||
use crate::{declare_lint, declare_lint_pass, declare_tool_lint};
|
use crate::{declare_lint, declare_lint_pass};
|
||||||
use rustc_span::edition::Edition;
|
use rustc_span::edition::Edition;
|
||||||
use rustc_span::symbol::sym;
|
use rustc_span::symbol::sym;
|
||||||
|
|
||||||
|
@ -2825,8 +2825,29 @@ declare_lint! {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
declare_tool_lint! {
|
declare_lint! {
|
||||||
pub rustc::INEFFECTIVE_UNSTABLE_TRAIT_IMPL,
|
/// The `ineffective_unstable_trait_impl` lint detects `#[unstable]` attributes which are not used.
|
||||||
|
///
|
||||||
|
/// ### Example
|
||||||
|
///
|
||||||
|
/// ```compile_fail
|
||||||
|
/// #![feature(staged_api)]
|
||||||
|
///
|
||||||
|
/// #[derive(Clone)]
|
||||||
|
/// #[stable(feature = "x", since = "1")]
|
||||||
|
/// struct S {}
|
||||||
|
///
|
||||||
|
/// #[unstable(feature = "y", issue = "none")]
|
||||||
|
/// impl Copy for S {}
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// {{produces}}
|
||||||
|
///
|
||||||
|
/// ### Explanation
|
||||||
|
///
|
||||||
|
/// `staged_api` does not currently support using a stability attribute on `impl` blocks.
|
||||||
|
/// `impl`s are always stable if both the type and trait are stable, and always unstable otherwise.
|
||||||
|
pub INEFFECTIVE_UNSTABLE_TRAIT_IMPL,
|
||||||
Deny,
|
Deny,
|
||||||
"detects `#[unstable]` on stable trait implementations for stable types"
|
"detects `#[unstable]` on stable trait implementations for stable types"
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,8 @@ pub trait Wake {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(rustc::ineffective_unstable_trait_impl)]
|
#[cfg_attr(bootstrap, allow(rustc::ineffective_unstable_trait_impl))]
|
||||||
|
#[cfg_attr(not(bootstrap), allow(ineffective_unstable_trait_impl))]
|
||||||
#[unstable(feature = "wake_trait", issue = "69912")]
|
#[unstable(feature = "wake_trait", issue = "69912")]
|
||||||
impl<W: Wake + Send + Sync + 'static> From<Arc<W>> for Waker {
|
impl<W: Wake + Send + Sync + 'static> From<Arc<W>> for Waker {
|
||||||
fn from(waker: Arc<W>) -> Waker {
|
fn from(waker: Arc<W>) -> Waker {
|
||||||
|
@ -43,7 +44,8 @@ impl<W: Wake + Send + Sync + 'static> From<Arc<W>> for Waker {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(rustc::ineffective_unstable_trait_impl)]
|
#[cfg_attr(bootstrap, allow(rustc::ineffective_unstable_trait_impl))]
|
||||||
|
#[cfg_attr(not(bootstrap), allow(ineffective_unstable_trait_impl))]
|
||||||
#[unstable(feature = "wake_trait", issue = "69912")]
|
#[unstable(feature = "wake_trait", issue = "69912")]
|
||||||
impl<W: Wake + Send + Sync + 'static> From<Arc<W>> for RawWaker {
|
impl<W: Wake + Send + Sync + 'static> From<Arc<W>> for RawWaker {
|
||||||
fn from(waker: Arc<W>) -> RawWaker {
|
fn from(waker: Arc<W>) -> RawWaker {
|
||||||
|
|
|
@ -22,7 +22,7 @@ impl StableTrait for UnstableType {}
|
||||||
impl UnstableTrait for StableType {}
|
impl UnstableTrait for StableType {}
|
||||||
|
|
||||||
#[unstable(feature = "x", issue = "none")]
|
#[unstable(feature = "x", issue = "none")]
|
||||||
//~^ ERROR an `#[unstable]` annotation here has no effect [rustc::ineffective_unstable_trait_impl]
|
//~^ ERROR an `#[unstable]` annotation here has no effect [ineffective_unstable_trait_impl]
|
||||||
impl StableTrait for StableType {}
|
impl StableTrait for StableType {}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -4,7 +4,7 @@ error: an `#[unstable]` annotation here has no effect
|
||||||
LL | #[unstable(feature = "x", issue = "none")]
|
LL | #[unstable(feature = "x", issue = "none")]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: `#[deny(rustc::ineffective_unstable_trait_impl)]` on by default
|
= note: `#[deny(ineffective_unstable_trait_impl)]` on by default
|
||||||
= note: see issue #55436 <https://github.com/rust-lang/rust/issues/55436> for more information
|
= note: see issue #55436 <https://github.com/rust-lang/rust/issues/55436> for more information
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue