Skip to content

Commit 8943ada

Browse files
committed
---
yaml --- r: 30162 b: refs/heads/incoming c: a70e37b h: refs/heads/master v: v3
1 parent 379f61f commit 8943ada

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
@@ -6,7 +6,7 @@ refs/heads/try: d324a424d8f84b1eb049b12cf34182bda91b0024
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: d0c6ce338884ee21843f4b40bf6bf18d222ce5df
9-
refs/heads/incoming: a19dce6c162f0dc24c615e8e667f190117126293
9+
refs/heads/incoming: a70e37b214407743ba9ac7e688e13d7a9d644ad5
1010
refs/heads/dist-snap: 2f32a1581f522e524009138b33b1c7049ced668d
1111
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1212
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/incoming/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)