stability: remove skip_stability_check_due_to_privacy
This commit is contained in:
parent
a8e75c53d0
commit
b07ed6ab16
3 changed files with 7 additions and 34 deletions
|
@ -10,7 +10,6 @@ use rustc_attr::{
|
||||||
use rustc_data_structures::unord::UnordMap;
|
use rustc_data_structures::unord::UnordMap;
|
||||||
use rustc_errors::{Applicability, Diag, EmissionGuarantee};
|
use rustc_errors::{Applicability, Diag, EmissionGuarantee};
|
||||||
use rustc_feature::GateIssue;
|
use rustc_feature::GateIssue;
|
||||||
use rustc_hir::def::DefKind;
|
|
||||||
use rustc_hir::def_id::{DefId, LocalDefId, LocalDefIdMap};
|
use rustc_hir::def_id::{DefId, LocalDefId, LocalDefIdMap};
|
||||||
use rustc_hir::{self as hir, HirId};
|
use rustc_hir::{self as hir, HirId};
|
||||||
use rustc_macros::{Decodable, Encodable, HashStable, Subdiagnostic};
|
use rustc_macros::{Decodable, Encodable, HashStable, Subdiagnostic};
|
||||||
|
@ -24,7 +23,7 @@ use rustc_span::symbol::{Symbol, sym};
|
||||||
use tracing::debug;
|
use tracing::debug;
|
||||||
|
|
||||||
pub use self::StabilityLevel::*;
|
pub use self::StabilityLevel::*;
|
||||||
use crate::ty::{self, TyCtxt};
|
use crate::ty::TyCtxt;
|
||||||
|
|
||||||
#[derive(PartialEq, Clone, Copy, Debug)]
|
#[derive(PartialEq, Clone, Copy, Debug)]
|
||||||
pub enum StabilityLevel {
|
pub enum StabilityLevel {
|
||||||
|
@ -273,22 +272,6 @@ pub enum EvalResult {
|
||||||
Unmarked,
|
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.
|
// See issue #83250.
|
||||||
fn suggestion_for_allocator_api(
|
fn suggestion_for_allocator_api(
|
||||||
tcx: TyCtxt<'_>,
|
tcx: TyCtxt<'_>,
|
||||||
|
@ -407,11 +390,6 @@ impl<'tcx> TyCtxt<'tcx> {
|
||||||
def_id, span, stability
|
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 {
|
match stability {
|
||||||
Some(Stability {
|
Some(Stability {
|
||||||
level: attr::Unstable { reason, issue, is_soft, implied_by },
|
level: attr::Unstable { reason, issue, is_soft, implied_by },
|
||||||
|
@ -495,11 +473,6 @@ impl<'tcx> TyCtxt<'tcx> {
|
||||||
"body stability: inspecting def_id={def_id:?} span={span:?} of stability={stability:?}"
|
"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 {
|
match stability {
|
||||||
Some(DefaultBodyStability {
|
Some(DefaultBodyStability {
|
||||||
level: attr::Unstable { reason, issue, is_soft, .. },
|
level: attr::Unstable { reason, issue, is_soft, .. },
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
// The basic stability pattern in this file has four cases:
|
// The basic stability pattern in this file has four cases:
|
||||||
// 1. no stability attribute at all
|
// 1. no stability attribute at all
|
||||||
// 2. a stable attribute (feature "unit_test")
|
// 2. a stable attribute (feature "unit_test")
|
||||||
// 3. an unstable attribute that unit test declares (feature "unstable_declared")
|
// 3. an unstable attribute that unit test enables (feature "unstable_declared")
|
||||||
// 4. an unstable attribute that unit test fails to declare (feature "unstable_undeclared")
|
// 4. an unstable attribute that unit test fails to enable (feature "unstable_undeclared")
|
||||||
//
|
//
|
||||||
// This file also covers four kinds of visibility: private,
|
// This file also covers four kinds of visibility: private,
|
||||||
// pub(module), pub(crate), and pub.
|
// pub(module), pub(crate), and pub.
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
//@ aux-build:pub-and-stability.rs
|
//@ aux-build:pub-and-stability.rs
|
||||||
|
|
||||||
// A big point of this test is that we *declare* `unstable_declared`,
|
// A big point of this test is that we *enable* `unstable_declared`,
|
||||||
// but do *not* declare `unstable_undeclared`. This way we can check
|
// but do *not* enable `unstable_undeclared`. This way we can check
|
||||||
// that the compiler is letting in uses of declared feature-gated
|
// that the compiler is letting in uses of enabled feature-gated
|
||||||
// stuff but still rejecting uses of undeclared feature-gated stuff.
|
// stuff but still rejecting uses of disabled feature-gated stuff.
|
||||||
#![feature(unstable_declared)]
|
#![feature(unstable_declared)]
|
||||||
|
|
||||||
extern crate pub_and_stability;
|
extern crate pub_and_stability;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue