diff --git a/src/libsyntax/ext/pipes/pipec.rs b/src/libsyntax/ext/pipes/pipec.rs index 529a5953dd51..392e6ba392ac 100644 --- a/src/libsyntax/ext/pipes/pipec.rs +++ b/src/libsyntax/ext/pipes/pipec.rs @@ -319,11 +319,12 @@ impl compile of gen_init for protocol { } fn buffer_ty_path(cx: ext_ctxt) -> @ast::ty { - let mut params = ~[]; + let mut params: ~[ast::ty_param] = ~[]; for (copy self.states).each |s| { for s.ty_params.each |tp| { - if !params.contains(tp) { - vec::push(params, tp); + alt params.find(|tpp| *tp.ident == *tpp.ident) { + none { vec::push(params, tp) } + _ { } } } } @@ -334,11 +335,12 @@ impl compile of gen_init for protocol { fn gen_buffer_type(cx: ext_ctxt) -> @ast::item { let ext_cx = cx; - let mut params = ~[]; + let mut params: ~[ast::ty_param] = ~[]; let fields = do (copy self.states).map_to_vec |s| { for s.ty_params.each |tp| { - if !params.contains(tp) { - vec::push(params, tp); + alt params.find(|tpp| *tp.ident == *tpp.ident) { + none { vec::push(params, tp) } + _ { } } } let ty = s.to_ty(cx); diff --git a/src/test/bench/task-perf-word-count-generic.rs b/src/test/bench/task-perf-word-count-generic.rs index 62aa4d75f20b..47bb538d03d7 100644 --- a/src/test/bench/task-perf-word-count-generic.rs +++ b/src/test/bench/task-perf-word-count-generic.rs @@ -143,14 +143,12 @@ mod map_reduce { proto! ctrl_proto { open: send { find_reducer(K) -> reducer_response, - mapper_done -> terminated + mapper_done -> ! } reducer_response: recv { reducer(chan>) -> open } - - terminated: send { } } enum reduce_proto { emit_val(V), done, ref, release } @@ -261,7 +259,7 @@ mod map_reduce { while num_mappers > 0 { let (_ready, message, ctrls) = pipes::select(ctrl); alt option::unwrap(message) { - ctrl_proto::mapper_done(_) { + ctrl_proto::mapper_done { // #error("received mapper terminated."); num_mappers -= 1; ctrl = ctrls;