Rollup merge of #126013 - nnethercote:unreachable_pub, r=Urgau

Add `#[warn(unreachable_pub)]` to a bunch of compiler crates

By default `unreachable_pub` identifies things that need not be `pub` and tells you to make them `pub(crate)`. But sometimes those things don't need any kind of visibility. So they way I did these was to remove the visibility entirely for each thing the lint identifies, and then add `pub(crate)` back in everywhere the compiler said it was necessary. (Or occasionally `pub(super)` when context suggested that was appropriate.) Tedious, but results in more `pub` removal.

There are plenty more crates to do but this seems like enough for a first PR.

r? `@compiler-errors`
This commit is contained in:
Matthias Krüger 2024-08-27 00:41:57 +02:00 committed by GitHub
commit 110c3df7fd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
76 changed files with 503 additions and 464 deletions

View file

@ -351,15 +351,15 @@ struct TypeParameter {
pub(crate) struct BlockOrExpr(ThinVec<ast::Stmt>, Option<P<Expr>>);
impl BlockOrExpr {
pub fn new_stmts(stmts: ThinVec<ast::Stmt>) -> BlockOrExpr {
pub(crate) fn new_stmts(stmts: ThinVec<ast::Stmt>) -> BlockOrExpr {
BlockOrExpr(stmts, None)
}
pub fn new_expr(expr: P<Expr>) -> BlockOrExpr {
pub(crate) fn new_expr(expr: P<Expr>) -> BlockOrExpr {
BlockOrExpr(ThinVec::new(), Some(expr))
}
pub fn new_mixed(stmts: ThinVec<ast::Stmt>, expr: Option<P<Expr>>) -> BlockOrExpr {
pub(crate) fn new_mixed(stmts: ThinVec<ast::Stmt>, expr: Option<P<Expr>>) -> BlockOrExpr {
BlockOrExpr(stmts, expr)
}
@ -461,7 +461,7 @@ fn find_type_parameters(
}
impl<'a> TraitDef<'a> {
pub fn expand(
pub(crate) fn expand(
self,
cx: &ExtCtxt<'_>,
mitem: &ast::MetaItem,
@ -471,7 +471,7 @@ impl<'a> TraitDef<'a> {
self.expand_ext(cx, mitem, item, push, false);
}
pub fn expand_ext(
pub(crate) fn expand_ext(
self,
cx: &ExtCtxt<'_>,
mitem: &ast::MetaItem,

View file

@ -27,17 +27,17 @@ pub(crate) enum PathKind {
}
impl Path {
pub fn new(path: Vec<Symbol>) -> Path {
pub(crate) fn new(path: Vec<Symbol>) -> Path {
Path::new_(path, Vec::new(), PathKind::Std)
}
pub fn new_local(path: Symbol) -> Path {
pub(crate) fn new_local(path: Symbol) -> Path {
Path::new_(vec![path], Vec::new(), PathKind::Local)
}
pub fn new_(path: Vec<Symbol>, params: Vec<Box<Ty>>, kind: PathKind) -> Path {
pub(crate) fn new_(path: Vec<Symbol>, params: Vec<Box<Ty>>, kind: PathKind) -> Path {
Path { path, params, kind }
}
pub fn to_ty(
pub(crate) fn to_ty(
&self,
cx: &ExtCtxt<'_>,
span: Span,
@ -46,7 +46,7 @@ impl Path {
) -> P<ast::Ty> {
cx.ty_path(self.to_path(cx, span, self_ty, self_generics))
}
pub fn to_path(
pub(crate) fn to_path(
&self,
cx: &ExtCtxt<'_>,
span: Span,
@ -87,7 +87,7 @@ pub(crate) fn self_ref() -> Ty {
}
impl Ty {
pub fn to_ty(
pub(crate) fn to_ty(
&self,
cx: &ExtCtxt<'_>,
span: Span,
@ -108,7 +108,7 @@ impl Ty {
}
}
pub fn to_path(
pub(crate) fn to_path(
&self,
cx: &ExtCtxt<'_>,
span: Span,
@ -167,10 +167,10 @@ pub(crate) struct Bounds {
}
impl Bounds {
pub fn empty() -> Bounds {
pub(crate) fn empty() -> Bounds {
Bounds { bounds: Vec::new() }
}
pub fn to_generics(
pub(crate) fn to_generics(
&self,
cx: &ExtCtxt<'_>,
span: Span,

View file

@ -18,7 +18,7 @@ macro_rules! path {
($span:expr, $($part:ident)::*) => { vec![$(Ident::new(sym::$part, $span),)*] }
}
pub fn expand_deriving_smart_ptr(
pub(crate) fn expand_deriving_smart_ptr(
cx: &ExtCtxt<'_>,
span: Span,
_mitem: &MetaItem,

View file

@ -930,7 +930,7 @@ pub(crate) struct ExpectedItem<'a> {
#[derive(Diagnostic)]
#[diag(builtin_macros_naked_functions_testing_attribute, code = E0736)]
pub struct NakedFunctionTestingAttribute {
pub(crate) struct NakedFunctionTestingAttribute {
#[primary_span]
#[label(builtin_macros_naked_attribute)]
pub naked_span: Span,

View file

@ -5,7 +5,7 @@ pub(crate) mod printf {
/// Represents a single `printf`-style substitution.
#[derive(Clone, PartialEq, Debug)]
pub enum Substitution<'a> {
pub(crate) enum Substitution<'a> {
/// A formatted output substitution with its internal byte offset.
Format(Format<'a>),
/// A literal `%%` escape, with its start and end indices.
@ -13,21 +13,21 @@ pub(crate) mod printf {
}
impl<'a> Substitution<'a> {
pub fn as_str(&self) -> &str {
pub(crate) fn as_str(&self) -> &str {
match self {
Substitution::Format(fmt) => fmt.span,
Substitution::Escape(_) => "%%",
}
}
pub fn position(&self) -> InnerSpan {
pub(crate) fn position(&self) -> InnerSpan {
match self {
Substitution::Format(fmt) => fmt.position,
&Substitution::Escape((start, end)) => InnerSpan::new(start, end),
}
}
pub fn set_position(&mut self, start: usize, end: usize) {
pub(crate) fn set_position(&mut self, start: usize, end: usize) {
match self {
Substitution::Format(fmt) => fmt.position = InnerSpan::new(start, end),
Substitution::Escape(pos) => *pos = (start, end),
@ -38,7 +38,7 @@ pub(crate) mod printf {
///
/// This ignores cases where the substitution does not have an exact equivalent, or where
/// the substitution would be unnecessary.
pub fn translate(&self) -> Result<String, Option<String>> {
pub(crate) fn translate(&self) -> Result<String, Option<String>> {
match self {
Substitution::Format(fmt) => fmt.translate(),
Substitution::Escape(_) => Err(None),
@ -48,23 +48,23 @@ pub(crate) mod printf {
#[derive(Clone, PartialEq, Debug)]
/// A single `printf`-style formatting directive.
pub struct Format<'a> {
pub(crate) struct Format<'a> {
/// The entire original formatting directive.
pub span: &'a str,
span: &'a str,
/// The (1-based) parameter to be converted.
pub parameter: Option<u16>,
parameter: Option<u16>,
/// Formatting flags.
pub flags: &'a str,
flags: &'a str,
/// Minimum width of the output.
pub width: Option<Num>,
width: Option<Num>,
/// Precision of the conversion.
pub precision: Option<Num>,
precision: Option<Num>,
/// Length modifier for the conversion.
pub length: Option<&'a str>,
length: Option<&'a str>,
/// Type of parameter being converted.
pub type_: &'a str,
type_: &'a str,
/// Byte offset for the start and end of this formatting directive.
pub position: InnerSpan,
position: InnerSpan,
}
impl Format<'_> {
@ -72,7 +72,7 @@ pub(crate) mod printf {
///
/// Returns `Err` in cases where the `printf` directive does not have an exact Rust
/// equivalent, rather than guessing.
pub fn translate(&self) -> Result<String, Option<String>> {
pub(crate) fn translate(&self) -> Result<String, Option<String>> {
use std::fmt::Write;
let (c_alt, c_zero, c_left, c_plus) = {
@ -249,7 +249,7 @@ pub(crate) mod printf {
/// A general number used in a `printf` formatting directive.
#[derive(Copy, Clone, PartialEq, Debug)]
pub enum Num {
enum Num {
// The range of these values is technically bounded by `NL_ARGMAX`... but, at least for GNU
// libc, it apparently has no real fixed limit. A `u16` is used here on the basis that it
// is *vanishingly* unlikely that *anyone* is going to try formatting something wider, or
@ -288,12 +288,12 @@ pub(crate) mod printf {
}
/// Returns an iterator over all substitutions in a given string.
pub fn iter_subs(s: &str, start_pos: usize) -> Substitutions<'_> {
pub(crate) fn iter_subs(s: &str, start_pos: usize) -> Substitutions<'_> {
Substitutions { s, pos: start_pos }
}
/// Iterator over substitutions in a string.
pub struct Substitutions<'a> {
pub(crate) struct Substitutions<'a> {
s: &'a str,
pos: usize,
}
@ -327,7 +327,7 @@ pub(crate) mod printf {
}
/// Parse the next substitution from the input string.
pub fn parse_next_substitution(s: &str) -> Option<(Substitution<'_>, &str)> {
fn parse_next_substitution(s: &str) -> Option<(Substitution<'_>, &str)> {
use self::State::*;
let at = {
@ -615,20 +615,20 @@ pub(crate) mod printf {
mod tests;
}
pub mod shell {
pub(crate) mod shell {
use rustc_span::InnerSpan;
use super::strcursor::StrCursor as Cur;
#[derive(Clone, PartialEq, Debug)]
pub enum Substitution<'a> {
pub(crate) enum Substitution<'a> {
Ordinal(u8, (usize, usize)),
Name(&'a str, (usize, usize)),
Escape((usize, usize)),
}
impl Substitution<'_> {
pub fn as_str(&self) -> String {
pub(crate) fn as_str(&self) -> String {
match self {
Substitution::Ordinal(n, _) => format!("${n}"),
Substitution::Name(n, _) => format!("${n}"),
@ -636,17 +636,17 @@ pub mod shell {
}
}
pub fn position(&self) -> InnerSpan {
pub(crate) fn position(&self) -> InnerSpan {
let (Self::Ordinal(_, pos) | Self::Name(_, pos) | Self::Escape(pos)) = self;
InnerSpan::new(pos.0, pos.1)
}
pub fn set_position(&mut self, start: usize, end: usize) {
fn set_position(&mut self, start: usize, end: usize) {
let (Self::Ordinal(_, pos) | Self::Name(_, pos) | Self::Escape(pos)) = self;
*pos = (start, end);
}
pub fn translate(&self) -> Result<String, Option<String>> {
pub(crate) fn translate(&self) -> Result<String, Option<String>> {
match self {
Substitution::Ordinal(n, _) => Ok(format!("{{{}}}", n)),
Substitution::Name(n, _) => Ok(format!("{{{}}}", n)),
@ -656,12 +656,12 @@ pub mod shell {
}
/// Returns an iterator over all substitutions in a given string.
pub fn iter_subs(s: &str, start_pos: usize) -> Substitutions<'_> {
pub(crate) fn iter_subs(s: &str, start_pos: usize) -> Substitutions<'_> {
Substitutions { s, pos: start_pos }
}
/// Iterator over substitutions in a string.
pub struct Substitutions<'a> {
pub(crate) struct Substitutions<'a> {
s: &'a str,
pos: usize,
}
@ -683,7 +683,7 @@ pub mod shell {
}
/// Parse the next substitution from the input string.
pub fn parse_next_substitution(s: &str) -> Option<(Substitution<'_>, &str)> {
fn parse_next_substitution(s: &str) -> Option<(Substitution<'_>, &str)> {
let at = {
let start = s.find('$')?;
match s[start + 1..].chars().next()? {
@ -743,24 +743,24 @@ pub mod shell {
}
mod strcursor {
pub struct StrCursor<'a> {
pub(crate) struct StrCursor<'a> {
s: &'a str,
pub at: usize,
}
impl<'a> StrCursor<'a> {
pub fn new_at(s: &'a str, at: usize) -> StrCursor<'a> {
pub(crate) fn new_at(s: &'a str, at: usize) -> StrCursor<'a> {
StrCursor { s, at }
}
pub fn at_next_cp(mut self) -> Option<StrCursor<'a>> {
pub(crate) fn at_next_cp(mut self) -> Option<StrCursor<'a>> {
match self.try_seek_right_cp() {
true => Some(self),
false => None,
}
}
pub fn next_cp(mut self) -> Option<(char, StrCursor<'a>)> {
pub(crate) fn next_cp(mut self) -> Option<(char, StrCursor<'a>)> {
let cp = self.cp_after()?;
self.seek_right(cp.len_utf8());
Some((cp, self))
@ -770,11 +770,11 @@ mod strcursor {
&self.s[0..self.at]
}
pub fn slice_after(&self) -> &'a str {
pub(crate) fn slice_after(&self) -> &'a str {
&self.s[self.at..]
}
pub fn slice_between(&self, until: StrCursor<'a>) -> Option<&'a str> {
pub(crate) fn slice_between(&self, until: StrCursor<'a>) -> Option<&'a str> {
if !str_eq_literal(self.s, until.s) {
None
} else {

View file

@ -16,6 +16,7 @@
#![feature(proc_macro_quote)]
#![feature(rustdoc_internals)]
#![feature(try_blocks)]
#![warn(unreachable_pub)]
// tidy-alphabetical-end
extern crate proc_macro;