diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2011-07-06 16:01:47 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2011-07-06 16:01:47 -0700 |
| commit | c83782f5008b366191ddf8f6f820b49a23eaadcd (patch) | |
| tree | 75edb34aaaba74ce7b63c6ff397445d0fcd231bd /src/comp/syntax | |
| parent | aad0bcc8d5e1ed9cf6ca0eedae21b3aa0c67ab16 (diff) | |
| download | rust-c83782f5008b366191ddf8f6f820b49a23eaadcd.tar.gz rust-c83782f5008b366191ddf8f6f820b49a23eaadcd.zip | |
rustc: Migrate core AST types to interior vectors
Diffstat (limited to 'src/comp/syntax')
| -rw-r--r-- | src/comp/syntax/ast.rs | 8 | ||||
| -rw-r--r-- | src/comp/syntax/parse/parser.rs | 10 | ||||
| -rw-r--r-- | src/comp/syntax/print/pprust.rs | 26 |
3 files changed, 32 insertions, 12 deletions
diff --git a/src/comp/syntax/ast.rs b/src/comp/syntax/ast.rs index f785a00a69c..0099535651d 100644 --- a/src/comp/syntax/ast.rs +++ b/src/comp/syntax/ast.rs @@ -334,7 +334,7 @@ type ty_arg_ = rec(mode mode, @ty ty); type ty_method_ = rec(proto proto, ident ident, - vec[ty_arg] inputs, + ty_arg[] inputs, @ty output, controlflow cf, vec[@constr] constrs); @@ -402,9 +402,9 @@ tag ty_ { ty_port(@ty); ty_chan(@ty); ty_tup(mt[]); - ty_rec(vec[ty_field]); - ty_fn(proto, vec[ty_arg], @ty, controlflow, vec[@constr]); - ty_obj(vec[ty_method]); + ty_rec(ty_field[]); + ty_fn(proto, ty_arg[], @ty, controlflow, vec[@constr]); + ty_obj(ty_method[]); ty_path(path, node_id); ty_type; ty_constr(@ty, vec[@constr]); diff --git a/src/comp/syntax/parse/parser.rs b/src/comp/syntax/parse/parser.rs index ae102027f0a..3abe4f5a6ed 100644 --- a/src/comp/syntax/parse/parser.rs +++ b/src/comp/syntax/parse/parser.rs @@ -258,8 +258,8 @@ fn parse_ty_fn(ast::proto proto, &parser p, uint lo) -> ast::ty_ { } auto lo = p.get_lo_pos(); auto inputs = - parse_seq(token::LPAREN, token::RPAREN, some(token::COMMA), - parse_fn_input_ty, p); + parse_seq_ivec(token::LPAREN, token::RPAREN, some(token::COMMA), + parse_fn_input_ty, p); auto constrs = parse_constrs([], p); let @ast::ty output; auto cf = ast::return; @@ -308,7 +308,7 @@ fn parse_ty_obj(&parser p, &mutable uint hi) -> ast::ty_ { fail; } auto f = parse_method_sig; - auto meths = parse_seq(token::LBRACE, token::RBRACE, none, f, p); + auto meths = parse_seq_ivec(token::LBRACE, token::RBRACE, none, f, p); hi = meths.span.hi; ret ast::ty_obj(meths.node); } @@ -526,8 +526,8 @@ fn parse_ty(&parser p) -> @ast::ty { t = ast::ty_tup(elems.node); } else if (eat_word(p, "rec")) { auto elems = - parse_seq(token::LPAREN, token::RPAREN, some(token::COMMA), - parse_ty_field, p); + parse_seq_ivec(token::LPAREN, token::RPAREN, some(token::COMMA), + parse_ty_field, p); hi = elems.span.hi; t = ast::ty_rec(elems.node); } else if (eat_word(p, "fn")) { diff --git a/src/comp/syntax/print/pprust.rs b/src/comp/syntax/print/pprust.rs index 83f27f7560f..c93e7631c1a 100644 --- a/src/comp/syntax/print/pprust.rs +++ b/src/comp/syntax/print/pprust.rs @@ -237,6 +237,26 @@ fn commasep_cmnt[IN](&ps s, breaks b, vec[IN] elts, fn(&ps, &IN) op, end(s); } +// TODO: Remove me. +fn commasep_cmnt_ivec[IN](&ps s, breaks b, &IN[] elts, fn(&ps, &IN) op, + fn(&IN) -> codemap::span get_span) { + box(s, 0u, b); + auto len = ivec::len[IN](elts); + auto i = 0u; + for (IN elt in elts) { + maybe_print_comment(s, get_span(elt).hi); + op(s, elt); + i += 1u; + if (i < len) { + word(s.s, ","); + maybe_print_trailing_comment(s, get_span(elt), + some(get_span(elts.(i)).hi)); + space_if_not_hardbreak(s); + } + } + end(s); +} + fn commasep_exprs(&ps s, breaks b, vec[@ast::expr] exprs) { fn expr_span(&@ast::expr expr) -> codemap::span { ret expr.span; } commasep_cmnt(s, b, exprs, print_expr, expr_span); @@ -315,7 +335,7 @@ fn print_type(&ps s, &ast::ty ty) { end(s); } fn get_span(&ast::ty_field f) -> codemap::span { ret f.span; } - commasep_cmnt(s, consistent, fields, print_field, get_span); + commasep_cmnt_ivec(s, consistent, fields, print_field, get_span); pclose(s); } case (ast::ty_fn(?proto, ?inputs, ?output, ?cf, ?constrs)) { @@ -1214,7 +1234,7 @@ fn print_mt(&ps s, &ast::mt mt) { } fn print_ty_fn(&ps s, &ast::proto proto, &option::t[str] id, - &vec[ast::ty_arg] inputs, &@ast::ty output, + &ast::ty_arg[] inputs, &@ast::ty output, &ast::controlflow cf, &vec[@ast::constr] constrs) { ibox(s, indent_unit); if (proto == ast::proto_fn) { @@ -1230,7 +1250,7 @@ fn print_ty_fn(&ps s, &ast::proto proto, &option::t[str] id, print_alias(s, input.node.mode); print_type(s, *input.node.ty); } - commasep(s, inconsistent, inputs, print_arg); + commasep_ivec(s, inconsistent, inputs, print_arg); pclose(s); maybe_print_comment(s, output.span.lo); if (output.node != ast::ty_nil) { |
