diff options
| -rw-r--r-- | compiler/rustc_typeck/src/collect.rs | 9 | ||||
| -rw-r--r-- | src/test/ui/traits/issue-96665.rs | 16 |
2 files changed, 20 insertions, 5 deletions
diff --git a/compiler/rustc_typeck/src/collect.rs b/compiler/rustc_typeck/src/collect.rs index 7a7e4a2f2b0..af7ef2ace3c 100644 --- a/compiler/rustc_typeck/src/collect.rs +++ b/compiler/rustc_typeck/src/collect.rs @@ -679,13 +679,12 @@ impl<'tcx> ItemCtxt<'tcx> { }; let bvars = self.tcx.late_bound_vars(bp.bounded_ty.hir_id); - bp.bounds - .iter() - .filter(|b| match assoc_name { + bp.bounds.iter().filter_map(move |b| bt.map(|bt| (bt, b, bvars))).filter( + |(_, b, _)| match assoc_name { Some(assoc_name) => self.bound_defines_assoc_item(b, assoc_name), None => true, - }) - .filter_map(move |b| bt.map(|bt| (bt, b, bvars))) + }, + ) }) .flat_map(|(bt, b, bvars)| predicates_from_bound(self, bt, b, bvars)) .collect() diff --git a/src/test/ui/traits/issue-96665.rs b/src/test/ui/traits/issue-96665.rs new file mode 100644 index 00000000000..a571d48d97a --- /dev/null +++ b/src/test/ui/traits/issue-96665.rs @@ -0,0 +1,16 @@ +// check-pass + +pub trait Sequence<Item, Subsequence: Sequence<Item, Subsequence>> {} + +pub trait NodeWalk<Graph: GraphBase, NodeSubwalk: NodeWalk<Graph, NodeSubwalk>>: + Sequence<Graph::NodeIndex, NodeSubwalk> +{ +} + +pub trait GraphBase { + type NodeIndex; +} + +pub trait WalkableGraph: GraphBase {} + +fn main() {} |
