Skip to content

Commit

Permalink
stability: remove skip_stability_check_due_to_privacy
Browse files Browse the repository at this point in the history
  • Loading branch information
RalfJung committed Nov 18, 2024
1 parent a8e75c5 commit b07ed6a
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 34 deletions.
29 changes: 1 addition & 28 deletions compiler/rustc_middle/src/middle/stability.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ use rustc_attr::{
use rustc_data_structures::unord::UnordMap;
use rustc_errors::{Applicability, Diag, EmissionGuarantee};
use rustc_feature::GateIssue;
use rustc_hir::def::DefKind;
use rustc_hir::def_id::{DefId, LocalDefId, LocalDefIdMap};
use rustc_hir::{self as hir, HirId};
use rustc_macros::{Decodable, Encodable, HashStable, Subdiagnostic};
Expand All @@ -24,7 +23,7 @@ use rustc_span::symbol::{Symbol, sym};
use tracing::debug;

pub use self::StabilityLevel::*;
use crate::ty::{self, TyCtxt};
use crate::ty::TyCtxt;

#[derive(PartialEq, Clone, Copy, Debug)]
pub enum StabilityLevel {
Expand Down Expand Up @@ -273,22 +272,6 @@ pub enum EvalResult {
Unmarked,
}

// See issue #38412.
fn skip_stability_check_due_to_privacy(tcx: TyCtxt<'_>, def_id: DefId) -> bool {
if tcx.def_kind(def_id) == DefKind::TyParam {
// Have no visibility, considered public for the purpose of this check.
return false;
}
match tcx.visibility(def_id) {
// Must check stability for `pub` items.
ty::Visibility::Public => false,

// These are not visible outside crate; therefore
// stability markers are irrelevant, if even present.
ty::Visibility::Restricted(..) => true,
}
}

// See issue #83250.
fn suggestion_for_allocator_api(
tcx: TyCtxt<'_>,
Expand Down Expand Up @@ -407,11 +390,6 @@ impl<'tcx> TyCtxt<'tcx> {
def_id, span, stability
);

// Issue #38412: private items lack stability markers.
if skip_stability_check_due_to_privacy(self, def_id) {
return EvalResult::Allow;
}

match stability {
Some(Stability {
level: attr::Unstable { reason, issue, is_soft, implied_by },
Expand Down Expand Up @@ -495,11 +473,6 @@ impl<'tcx> TyCtxt<'tcx> {
"body stability: inspecting def_id={def_id:?} span={span:?} of stability={stability:?}"
);

// Issue #38412: private items lack stability markers.
if skip_stability_check_due_to_privacy(self, def_id) {
return EvalResult::Allow;
}

match stability {
Some(DefaultBodyStability {
level: attr::Unstable { reason, issue, is_soft, .. },
Expand Down
4 changes: 2 additions & 2 deletions tests/ui/auxiliary/pub-and-stability.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
// The basic stability pattern in this file has four cases:
// 1. no stability attribute at all
// 2. a stable attribute (feature "unit_test")
// 3. an unstable attribute that unit test declares (feature "unstable_declared")
// 4. an unstable attribute that unit test fails to declare (feature "unstable_undeclared")
// 3. an unstable attribute that unit test enables (feature "unstable_declared")
// 4. an unstable attribute that unit test fails to enable (feature "unstable_undeclared")
//
// This file also covers four kinds of visibility: private,
// pub(module), pub(crate), and pub.
Expand Down
8 changes: 4 additions & 4 deletions tests/ui/explore-issue-38412.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
//@ aux-build:pub-and-stability.rs

// A big point of this test is that we *declare* `unstable_declared`,
// but do *not* declare `unstable_undeclared`. This way we can check
// that the compiler is letting in uses of declared feature-gated
// stuff but still rejecting uses of undeclared feature-gated stuff.
// A big point of this test is that we *enable* `unstable_declared`,
// but do *not* enable `unstable_undeclared`. This way we can check
// that the compiler is letting in uses of enabled feature-gated
// stuff but still rejecting uses of disabled feature-gated stuff.
#![feature(unstable_declared)]

extern crate pub_and_stability;
Expand Down

0 comments on commit b07ed6a

Please sign in to comment.