diff options
| author | Deadbeef <ent3rm4n@gmail.com> | 2025-02-07 21:58:08 +0800 |
|---|---|---|
| committer | Deadbeef <ent3rm4n@gmail.com> | 2025-02-27 04:56:27 +0000 |
| commit | ef66cbb27bc2a911edf4541e1c56102dc03e42d9 (patch) | |
| tree | 5fb460c1ecc5ad46a2cf26261facbc965ea55edb /compiler/rustc_passes/src/errors.rs | |
| parent | 00f245915b0c7839d42c26f9628220c4f1b93bf6 (diff) | |
| download | rust-ef66cbb27bc2a911edf4541e1c56102dc03e42d9.tar.gz rust-ef66cbb27bc2a911edf4541e1c56102dc03e42d9.zip | |
require trait impls to have matching const stabilities as the traits
Diffstat (limited to 'compiler/rustc_passes/src/errors.rs')
| -rw-r--r-- | compiler/rustc_passes/src/errors.rs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/compiler/rustc_passes/src/errors.rs b/compiler/rustc_passes/src/errors.rs index 51b5861ee0a..9bb9b2353dc 100644 --- a/compiler/rustc_passes/src/errors.rs +++ b/compiler/rustc_passes/src/errors.rs @@ -1553,6 +1553,45 @@ pub(crate) struct TraitImplConstStable { } #[derive(Diagnostic)] +#[diag(passes_trait_impl_const_stability_mismatch)] +pub(crate) struct TraitImplConstStabilityMismatch { + #[primary_span] + pub span: Span, + #[subdiagnostic] + pub impl_stability: ImplConstStability, + #[subdiagnostic] + pub trait_stability: TraitConstStability, +} + +#[derive(Subdiagnostic)] +pub(crate) enum TraitConstStability { + #[note(passes_trait_impl_const_stability_mismatch_trait_stable)] + Stable { + #[primary_span] + span: Span, + }, + #[note(passes_trait_impl_const_stability_mismatch_trait_unstable)] + Unstable { + #[primary_span] + span: Span, + }, +} + +#[derive(Subdiagnostic)] +pub(crate) enum ImplConstStability { + #[note(passes_trait_impl_const_stability_mismatch_impl_stable)] + Stable { + #[primary_span] + span: Span, + }, + #[note(passes_trait_impl_const_stability_mismatch_impl_unstable)] + Unstable { + #[primary_span] + span: Span, + }, +} + +#[derive(Diagnostic)] #[diag(passes_unknown_feature, code = E0635)] pub(crate) struct UnknownFeature { #[primary_span] |
