diff options
| author | bors <bors@rust-lang.org> | 2021-11-12 19:28:04 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-11-12 19:28:04 +0000 |
| commit | e90c5fbbc5df5c81267747daeb937d4e955ce6ad (patch) | |
| tree | 8d5dfc3ab54f45746b74fe9a33d9a86d6d7c526f /src | |
| parent | 220ed09b26177ca4b6ab525f403d251024389a41 (diff) | |
| parent | 5e7c0313976d670bbe6accdaa27347ed23aed58b (diff) | |
| download | rust-e90c5fbbc5df5c81267747daeb937d4e955ce6ad.tar.gz rust-e90c5fbbc5df5c81267747daeb937d4e955ce6ad.zip | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustdoc/html/render/cache.rs | 15 | ||||
| -rw-r--r-- | src/test/ui/lint/unused/issue-70041.stderr | 11 | ||||
| -rw-r--r-- | src/test/ui/lint/unused/unused-macro-rules.stderr | 35 | ||||
| -rw-r--r-- | src/test/ui/lint/unused/unused-macro.stderr | 30 | ||||
| -rw-r--r-- | src/test/ui/proc-macro/issue-39889.rs | 2 |
5 files changed, 42 insertions, 51 deletions
diff --git a/src/librustdoc/html/render/cache.rs b/src/librustdoc/html/render/cache.rs index 896c2543608..7aa950d905d 100644 --- a/src/librustdoc/html/render/cache.rs +++ b/src/librustdoc/html/render/cache.rs @@ -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() { diff --git a/src/test/ui/lint/unused/issue-70041.stderr b/src/test/ui/lint/unused/issue-70041.stderr index ecd618eae8b..b2e6d1aeb3f 100644 --- a/src/test/ui/lint/unused/issue-70041.stderr +++ b/src/test/ui/lint/unused/issue-70041.stderr @@ -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 diff --git a/src/test/ui/lint/unused/unused-macro-rules.stderr b/src/test/ui/lint/unused/unused-macro-rules.stderr index 6812a1d8f63..59db35b4111 100644 --- a/src/test/ui/lint/unused/unused-macro-rules.stderr +++ b/src/test/ui/lint/unused/unused-macro-rules.stderr @@ -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 diff --git a/src/test/ui/lint/unused/unused-macro.stderr b/src/test/ui/lint/unused/unused-macro.stderr index f5eb76179bf..1a73279ed6d 100644 --- a/src/test/ui/lint/unused/unused-macro.stderr +++ b/src/test/ui/lint/unused/unused-macro.stderr @@ -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 diff --git a/src/test/ui/proc-macro/issue-39889.rs b/src/test/ui/proc-macro/issue-39889.rs index ada125a215a..69bfb4f3cbf 100644 --- a/src/test/ui/proc-macro/issue-39889.rs +++ b/src/test/ui/proc-macro/issue-39889.rs @@ -1,6 +1,6 @@ // run-pass -#![allow(dead_code)] +#![allow(dead_code, unused_macros)] // aux-build:issue-39889.rs extern crate issue_39889; |
