diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs index 0a964750aacc..0a90b657cc56 100644 --- a/src/comp/middle/typeck.rs +++ b/src/comp/middle/typeck.rs @@ -315,11 +315,7 @@ fn ast_ty_to_ty(&ty::ctxt tcx, &ty_getter getter, &@ast::ty ast_ty) -> ty::t { typ = ty::mk_chan(tcx, ast_ty_to_ty(tcx, getter, t)); } case (ast::ty_tup(?fields)) { - let ty::mt[] flds = ~[]; - ivec::reserve(flds, vec::len(fields)); - for (ast::mt field in fields) { - flds += ~[ast_mt_to_mt(tcx, getter, field)]; - } + auto flds = ivec::map(bind ast_mt_to_mt(tcx, getter, _), fields); typ = ty::mk_tup(tcx, flds); } case (ast::ty_rec(?fields)) { diff --git a/src/comp/syntax/ast.rs b/src/comp/syntax/ast.rs index 0258472042ec..f785a00a69cd 100644 --- a/src/comp/syntax/ast.rs +++ b/src/comp/syntax/ast.rs @@ -401,7 +401,7 @@ tag ty_ { ty_task; ty_port(@ty); ty_chan(@ty); - ty_tup(vec[mt]); + ty_tup(mt[]); ty_rec(vec[ty_field]); ty_fn(proto, vec[ty_arg], @ty, controlflow, vec[@constr]); ty_obj(vec[ty_method]); diff --git a/src/comp/syntax/parse/parser.rs b/src/comp/syntax/parse/parser.rs index 8923588dba4a..ae102027f0a4 100644 --- a/src/comp/syntax/parse/parser.rs +++ b/src/comp/syntax/parse/parser.rs @@ -520,8 +520,8 @@ fn parse_ty(&parser p) -> @ast::ty { expect(p, token::RBRACKET); } else if (eat_word(p, "tup")) { auto elems = - parse_seq(token::LPAREN, token::RPAREN, some(token::COMMA), - parse_mt, p); + parse_seq_ivec(token::LPAREN, token::RPAREN, some(token::COMMA), + parse_mt, p); hi = elems.span.hi; t = ast::ty_tup(elems.node); } else if (eat_word(p, "rec")) { diff --git a/src/comp/syntax/print/pprust.rs b/src/comp/syntax/print/pprust.rs index ec9d6316f72b..83f27f7560f1 100644 --- a/src/comp/syntax/print/pprust.rs +++ b/src/comp/syntax/print/pprust.rs @@ -301,7 +301,7 @@ fn print_type(&ps s, &ast::ty ty) { case (ast::ty_tup(?elts)) { word(s.s, "tup"); popen(s); - commasep(s, inconsistent, elts, print_mt); + commasep_ivec(s, inconsistent, elts, print_mt); pclose(s); } case (ast::ty_rec(?fields)) {