Auto merge of #96770 - flip1995:fix-trait-type-in-bounds, r=cjgillot
Track if a where bound comes from a impl Trait desugar With https://github.com/rust-lang/rust/pull/93803 `impl Trait` function arguments get desugared to hidden where bounds. However, Clippy needs to know if a bound was originally a `impl Trait` or an actual bound. This adds a field to the `WhereBoundPredicate` struct to keep track of this information during AST->HIR lowering. r? `@cjgillot` cc `@estebank` (as the reviewer of #93803)
This commit is contained in:
commit
ed3164baf0
11 changed files with 40 additions and 34 deletions
|
@ -706,7 +706,7 @@ impl<'hir> WherePredicate<'hir> {
|
|||
|
||||
pub fn in_where_clause(&self) -> bool {
|
||||
match self {
|
||||
WherePredicate::BoundPredicate(p) => p.in_where_clause,
|
||||
WherePredicate::BoundPredicate(p) => p.origin == PredicateOrigin::WhereClause,
|
||||
WherePredicate::RegionPredicate(p) => p.in_where_clause,
|
||||
WherePredicate::EqPredicate(_) => false,
|
||||
}
|
||||
|
@ -721,11 +721,19 @@ impl<'hir> WherePredicate<'hir> {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, HashStable_Generic, PartialEq, Eq)]
|
||||
pub enum PredicateOrigin {
|
||||
WhereClause,
|
||||
GenericParam,
|
||||
ImplTrait,
|
||||
}
|
||||
|
||||
/// A type bound (e.g., `for<'c> Foo: Send + Clone + 'c`).
|
||||
#[derive(Debug, HashStable_Generic)]
|
||||
pub struct WhereBoundPredicate<'hir> {
|
||||
pub span: Span,
|
||||
pub in_where_clause: bool,
|
||||
/// Origin of the predicate.
|
||||
pub origin: PredicateOrigin,
|
||||
/// Any generics from a `for` binding.
|
||||
pub bound_generic_params: &'hir [GenericParam<'hir>],
|
||||
/// The type being bounded.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue