Auto merge of #90836 - matthiaskrgr:rollup-ou6yrlw, r=matthiaskrgr
Rollup of 7 pull requests Successful merges: - #90589 (rustc_llvm: update PassWrapper for recent LLVM) - #90644 (Extend the const swap feature) - #90704 (Unix ExitStatus comments and a tiny docs fix) - #90761 (Shorten Span of unused macro lints) - #90795 (Add more comments to explain the code to generate the search index) - #90798 (Document `unreachable!` custom panic message) - #90826 (rustc_feature: Convert `BuiltinAttribute` from tuple to a struct) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
e90c5fbbc5
21 changed files with 145 additions and 121 deletions
|
|
@ -244,8 +244,10 @@ fn get_index_type_name(clean_type: &clean::Type, accept_generic: bool) -> Option
|
|||
/// The point of this function is to replace bounds with types.
|
||||
///
|
||||
/// i.e. `[T, U]` when you have the following bounds: `T: Display, U: Option<T>` will return
|
||||
/// `[Display, Option]` (we just returns the list of the types, we don't care about the
|
||||
/// wrapped types in here).
|
||||
/// `[Display, Option]`. If a type parameter has no trait bound, it is discarded.
|
||||
///
|
||||
/// Important note: It goes through generics recursively. So if you have
|
||||
/// `T: Option<Result<(), ()>>`, it'll go into `Option` and then into `Result`.
|
||||
crate fn get_real_types<'tcx>(
|
||||
generics: &Generics,
|
||||
arg: &Type,
|
||||
|
|
@ -329,7 +331,10 @@ crate fn get_real_types<'tcx>(
|
|||
return;
|
||||
}
|
||||
|
||||
// If this argument is a type parameter and not a trait bound or a type, we need to look
|
||||
// for its bounds.
|
||||
if let Type::Generic(arg_s) = *arg {
|
||||
// First we check if the bounds are in a `where` predicate...
|
||||
if let Some(where_pred) = generics.where_predicates.iter().find(|g| match g {
|
||||
WherePredicate::BoundPredicate { ty, .. } => {
|
||||
ty.def_id_no_primitives() == arg.def_id_no_primitives()
|
||||
|
|
@ -352,6 +357,7 @@ crate fn get_real_types<'tcx>(
|
|||
}
|
||||
insert_ty(res, tcx, arg.clone(), ty_generics);
|
||||
}
|
||||
// Otherwise we check if the trait bounds are "inlined" like `T: Option<u32>`...
|
||||
if let Some(bound) = generics.params.iter().find(|g| g.is_type() && g.name == arg_s) {
|
||||
let mut ty_generics = Vec::new();
|
||||
for bound in bound.get_bounds().unwrap_or(&[]) {
|
||||
|
|
@ -363,6 +369,11 @@ crate fn get_real_types<'tcx>(
|
|||
insert_ty(res, tcx, arg.clone(), ty_generics);
|
||||
}
|
||||
} else {
|
||||
// This is not a type parameter. So for example if we have `T, U: Option<T>`, and we're
|
||||
// looking at `Option`, we enter this "else" condition, otherwise if it's `T`, we don't.
|
||||
//
|
||||
// So in here, we can add it directly and look for its own type parameters (so for `Option`,
|
||||
// we will look for them but not for `T`).
|
||||
let mut ty_generics = Vec::new();
|
||||
if let Some(arg_generics) = arg.generics() {
|
||||
for gen in arg_generics.iter() {
|
||||
|
|
|
|||
|
|
@ -1,11 +1,8 @@
|
|||
warning: unused macro definition
|
||||
--> $DIR/issue-70041.rs:4:1
|
||||
warning: unused macro definition: `regex`
|
||||
--> $DIR/issue-70041.rs:4:14
|
||||
|
|
||||
LL | / macro_rules! regex {
|
||||
LL | |
|
||||
LL | | () => {};
|
||||
LL | | }
|
||||
| |_^
|
||||
LL | macro_rules! regex {
|
||||
| ^^^^^
|
||||
|
|
||||
= note: `#[warn(unused_macros)]` on by default
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
error: unused macro definition
|
||||
--> $DIR/unused-macro-rules.rs:4:1
|
||||
error: unused macro definition: `unused`
|
||||
--> $DIR/unused-macro-rules.rs:4:14
|
||||
|
|
||||
LL | / macro_rules! unused {
|
||||
LL | | () => {};
|
||||
LL | | }
|
||||
| |_^
|
||||
LL | macro_rules! unused {
|
||||
| ^^^^^^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/unused-macro-rules.rs:1:9
|
||||
|
|
@ -12,26 +10,17 @@ note: the lint level is defined here
|
|||
LL | #![deny(unused_macros)]
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: unused macro definition
|
||||
--> $DIR/unused-macro-rules.rs:11:9
|
||||
error: unused macro definition: `m`
|
||||
--> $DIR/unused-macro-rules.rs:11:22
|
||||
|
|
||||
LL | / macro_rules! m {
|
||||
LL | | () => {};
|
||||
LL | | }
|
||||
| |_________^
|
||||
...
|
||||
LL | create_macro!();
|
||||
| --------------- in this macro invocation
|
||||
|
|
||||
= note: this error originates in the macro `create_macro` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
LL | macro_rules! m {
|
||||
| ^
|
||||
|
||||
error: unused macro definition
|
||||
--> $DIR/unused-macro-rules.rs:24:5
|
||||
error: unused macro definition: `unused`
|
||||
--> $DIR/unused-macro-rules.rs:24:18
|
||||
|
|
||||
LL | / macro_rules! unused {
|
||||
LL | | () => {};
|
||||
LL | | }
|
||||
| |_____^
|
||||
LL | macro_rules! unused {
|
||||
| ^^^^^^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/unused-macro-rules.rs:23:12
|
||||
|
|
|
|||
|
|
@ -1,10 +1,8 @@
|
|||
error: unused macro definition
|
||||
--> $DIR/unused-macro.rs:5:1
|
||||
error: unused macro definition: `unused`
|
||||
--> $DIR/unused-macro.rs:5:7
|
||||
|
|
||||
LL | / macro unused {
|
||||
LL | | () => {}
|
||||
LL | | }
|
||||
| |_^
|
||||
LL | macro unused {
|
||||
| ^^^^^^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/unused-macro.rs:2:9
|
||||
|
|
@ -12,13 +10,11 @@ note: the lint level is defined here
|
|||
LL | #![deny(unused_macros)]
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: unused macro definition
|
||||
--> $DIR/unused-macro.rs:15:5
|
||||
error: unused macro definition: `unused`
|
||||
--> $DIR/unused-macro.rs:15:11
|
||||
|
|
||||
LL | / macro unused {
|
||||
LL | | () => {}
|
||||
LL | | }
|
||||
| |_____^
|
||||
LL | macro unused {
|
||||
| ^^^^^^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/unused-macro.rs:14:12
|
||||
|
|
@ -26,13 +22,11 @@ note: the lint level is defined here
|
|||
LL | #[deny(unused_macros)]
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: unused macro definition
|
||||
--> $DIR/unused-macro.rs:21:5
|
||||
error: unused macro definition: `unused`
|
||||
--> $DIR/unused-macro.rs:21:22
|
||||
|
|
||||
LL | / pub(crate) macro unused {
|
||||
LL | | () => {}
|
||||
LL | | }
|
||||
| |_____^
|
||||
LL | pub(crate) macro unused {
|
||||
| ^^^^^^
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// run-pass
|
||||
|
||||
#![allow(dead_code)]
|
||||
#![allow(dead_code, unused_macros)]
|
||||
// aux-build:issue-39889.rs
|
||||
|
||||
extern crate issue_39889;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue