Skip to content

Commit fd2f2d5

Browse files
committed
---
yaml --- r: 28140 b: refs/heads/try c: a70e37b h: refs/heads/master v: v3
1 parent 10af891 commit fd2f2d5

File tree

3 files changed

+25
-16
lines changed

3 files changed

+25
-16
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
5-
refs/heads/try: a19dce6c162f0dc24c615e8e667f190117126293
5+
refs/heads/try: a70e37b214407743ba9ac7e688e13d7a9d644ad5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: d0c6ce338884ee21843f4b40bf6bf18d222ce5df

branches/try/src/rustc/middle/ty.rs

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2826,22 +2826,11 @@ fn impl_traits(cx: ctxt, id: ast::def_id) -> ~[t] {
28262826
node_id_to_type(cx, trait_ref.ref_id)
28272827
}
28282828
}
2829-
Some(ast_map::node_item(@{node: ast::item_class(*),
2829+
Some(ast_map::node_item(@{node: ast::item_class(sd,_),
28302830
_},_)) => {
2831-
match cx.def_map.find(id.node) {
2832-
Some(def_ty(trait_id)) => {
2833-
// XXX: Doesn't work cross-crate.
2834-
debug!("(impl_traits) found trait id %?", trait_id);
2835-
~[node_id_to_type(cx, trait_id.node)]
2836-
}
2837-
Some(x) => {
2838-
cx.sess.bug(fmt!("impl_traits: trait ref is in trait map \
2839-
but is bound to %?", x));
2840-
}
2841-
None => {
2842-
~[]
2843-
}
2844-
}
2831+
do vec::map(sd.traits) |trait_ref| {
2832+
node_id_to_type(cx, trait_ref.ref_id)
2833+
}
28452834
}
28462835
_ => ~[]
28472836
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
trait bar<T> {
2+
fn get_bar() -> T;
3+
}
4+
5+
fn foo<T, U: bar<T>>(b: U) -> T {
6+
b.get_bar()
7+
}
8+
9+
struct cbar : bar<int> {
10+
x: int;
11+
new(x: int) { self.x = x; }
12+
fn get_bar() -> int {
13+
self.x
14+
}
15+
}
16+
17+
fn main() {
18+
let x: int = foo::<int, cbar>(cbar(5));
19+
assert x == 5;
20+
}

0 commit comments

Comments
 (0)