about summary refs log tree commit diff
path: root/src/comp/syntax
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2011-07-06 16:01:47 -0700
committerPatrick Walton <pcwalton@mimiga.net>2011-07-06 16:01:47 -0700
commitc83782f5008b366191ddf8f6f820b49a23eaadcd (patch)
tree75edb34aaaba74ce7b63c6ff397445d0fcd231bd /src/comp/syntax
parentaad0bcc8d5e1ed9cf6ca0eedae21b3aa0c67ab16 (diff)
downloadrust-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.rs8
-rw-r--r--src/comp/syntax/parse/parser.rs10
-rw-r--r--src/comp/syntax/print/pprust.rs26
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) {