diff options
| author | Michael Goulet <michael@errs.io> | 2022-08-13 21:06:50 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-13 21:06:50 -0700 |
| commit | d46451ce2c75dd0757916b87eb6522fb3739d6ef (patch) | |
| tree | ca3da9228f8b406fd2de97716df5b57d995742be | |
| parent | e248c7f9ae1e6604767c9842be58d577e5890a7b (diff) | |
| parent | 6925f4101b426c66abe20e8acdddf8c20fd1e87c (diff) | |
| download | rust-d46451ce2c75dd0757916b87eb6522fb3739d6ef.tar.gz rust-d46451ce2c75dd0757916b87eb6522fb3739d6ef.zip | |
Rollup merge of #100431 - compiler-errors:enum-ctor-variant-stab, r=estebank
Enum variant ctor inherits the stability of the enum variant Fixes #100399 Fixes #100420 Context #71481 for why enum variants don't need stability
| -rw-r--r-- | compiler/rustc_passes/src/stability.rs | 5 | ||||
| -rw-r--r-- | src/test/ui/stability-attribute/auxiliary/ctor-stability.rs | 8 | ||||
| -rw-r--r-- | src/test/ui/stability-attribute/ctor-stability.rs | 8 |
3 files changed, 20 insertions, 1 deletions
diff --git a/compiler/rustc_passes/src/stability.rs b/compiler/rustc_passes/src/stability.rs index 34afea0f02e..f884e04a951 100644 --- a/compiler/rustc_passes/src/stability.rs +++ b/compiler/rustc_passes/src/stability.rs @@ -460,7 +460,7 @@ impl<'a, 'tcx> Visitor<'tcx> for Annotator<'a, 'tcx> { AnnotationKind::Required, InheritDeprecation::Yes, InheritConstStability::No, - InheritStability::No, + InheritStability::Yes, |_| {}, ); } @@ -600,6 +600,9 @@ impl<'tcx> Visitor<'tcx> for MissingStabilityAnnotations<'tcx> { fn visit_variant(&mut self, var: &'tcx Variant<'tcx>) { self.check_missing_stability(self.tcx.hir().local_def_id(var.id), var.span); + if let Some(ctor_hir_id) = var.data.ctor_hir_id() { + self.check_missing_stability(self.tcx.hir().local_def_id(ctor_hir_id), var.span); + } intravisit::walk_variant(self, var); } diff --git a/src/test/ui/stability-attribute/auxiliary/ctor-stability.rs b/src/test/ui/stability-attribute/auxiliary/ctor-stability.rs new file mode 100644 index 00000000000..74c6023d7fb --- /dev/null +++ b/src/test/ui/stability-attribute/auxiliary/ctor-stability.rs @@ -0,0 +1,8 @@ +#![crate_type = "lib"] +#![feature(staged_api)] +#![stable(feature = "none", since = "1.0")] + +#[stable(feature = "none", since = "1.0")] +pub enum Foo { + A, +} diff --git a/src/test/ui/stability-attribute/ctor-stability.rs b/src/test/ui/stability-attribute/ctor-stability.rs new file mode 100644 index 00000000000..fcab0cb1099 --- /dev/null +++ b/src/test/ui/stability-attribute/ctor-stability.rs @@ -0,0 +1,8 @@ +// aux-build:ctor-stability.rs +// check-pass + +extern crate ctor_stability; + +fn main() { + let _ = ctor_stability::Foo::A; +} |
