Skip to content

Commit 47621db

Browse files
committed
Auto merge of #21574 - japaric:walk-projections, r=nikomatsakis
closes #21363 r? @nikomatsakis
2 parents 458a6a2 + 12d7be9 commit 47621db

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

src/librustc/middle/ty_walk.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,11 @@ impl<'tcx> TypeWalker<'tcx> {
3737
ty::ty_projection(ref data) => {
3838
self.push_reversed(data.trait_ref.substs.types.as_slice());
3939
}
40-
ty::ty_trait(box ty::TyTrait { ref principal, .. }) => {
40+
ty::ty_trait(box ty::TyTrait { ref principal, ref bounds }) => {
4141
self.push_reversed(principal.substs().types.as_slice());
42+
self.push_reversed(bounds.projection_bounds.iter().map(|pred| {
43+
pred.0.ty
44+
}).collect::<Vec<_>>().as_slice());
4245
}
4346
ty::ty_enum(_, ref substs) |
4447
ty::ty_struct(_, ref substs) |

src/test/run-pass/issue-21363.rs

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
#![no_implicit_prelude]
12+
13+
trait Iterator {
14+
type Item;
15+
}
16+
17+
impl<'a, T> Iterator for &'a mut (Iterator<Item=T> + 'a) {
18+
type Item = T;
19+
}
20+
21+
fn main() {}

0 commit comments

Comments
 (0)