diff --git a/src/comp/syntax/visit.rs b/src/comp/syntax/visit.rs index 470a8e4e38db..9ff8ccb0c117 100644 --- a/src/comp/syntax/visit.rs +++ b/src/comp/syntax/visit.rs @@ -179,6 +179,13 @@ fn visit_ty[E](&@ty t, &E e, &vt[E] v) { } } +fn visit_ty_opt[E](&option::t[@ty] ot, &E e, &vt[E] v) { + alt (ot) { + case (none) {} + case (some(?t)) { v.visit_ty(t, e, v); } + } +} + fn visit_constr[E](&@constr c, &E e, &vt[E] v) { // default @@ -369,7 +376,7 @@ fn visit_expr[E](&@expr ex, &E e, &vt[E] v) { case (expr_log(_, ?x)) { v.visit_expr(x, e, v); } case (expr_check(_, ?x)) { v.visit_expr(x, e, v); } case (expr_assert(?x)) { v.visit_expr(x, e, v); } - case (expr_port(_)) { } + case (expr_port(?t)) { visit_ty_opt(t, e, v); } case (expr_chan(?x)) { v.visit_expr(x, e, v); } case (expr_anon_obj(?anon_obj, _)) { alt (anon_obj.fields) { diff --git a/src/test/run-fail/port-type.rs b/src/test/run-fail/port-type.rs new file mode 100644 index 000000000000..6f962a7f0d74 --- /dev/null +++ b/src/test/run-fail/port-type.rs @@ -0,0 +1,16 @@ +// xfail-stage0 +// error-pattern:meep +fn echo[T](chan[T] c, chan[chan[T]] oc) { + // Tests that the type argument in port gets + // visited + auto p = port[T](); + oc <| chan(p); + + auto x; + p |> x; + c <| x; +} + +fn main() { + fail "meep"; +} \ No newline at end of file