about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <respindola@mozilla.com>2011-02-04 09:46:10 -0500
committerRafael Ávila de Espíndola <respindola@mozilla.com>2011-02-04 09:46:10 -0500
commit302cafa81dcc868e840c78f2bfbf41929de8a487 (patch)
treebfc383e61d2ec8ceb88cc105036409a6b4414813 /src
parentbe97a77be81d286b1ae90c1050da1c7c0477ea3f (diff)
downloadrust-302cafa81dcc868e840c78f2bfbf41929de8a487.tar.gz
rust-302cafa81dcc868e840c78f2bfbf41929de8a487.zip
Factor the parsing of "type foo" into parse_type_decl.
Diffstat (limited to 'src')
-rw-r--r--src/comp/front/parser.rs20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/comp/front/parser.rs b/src/comp/front/parser.rs
index c088e68d939..1d54a6e15ff 100644
--- a/src/comp/front/parser.rs
+++ b/src/comp/front/parser.rs
@@ -1577,15 +1577,12 @@ impure fn parse_item_mod(parser p) -> @ast.item {
     ret @spanned(lo, hi, item);
 }
 
-
 impure fn parse_item_native_type(parser p) -> @ast.native_item {
-    auto lo = p.get_span();
-    expect(p, token.TYPE);
-    auto id = parse_ident(p);
+    auto t = parse_type_decl(p);
     auto hi = p.get_span();
     expect(p, token.SEMI);
-    auto item = ast.native_item_ty(id, p.next_def_id());
-    ret @spanned(lo, hi, item);
+    auto item = ast.native_item_ty(t._1, p.next_def_id());
+    ret @spanned(t._0, hi, item);
 }
 
 impure fn parse_native_item(parser p) -> @ast.native_item {
@@ -1624,18 +1621,23 @@ impure fn parse_item_native_mod(parser p) -> @ast.item {
     ret @spanned(lo, hi, item);
 }
 
-impure fn parse_item_type(parser p) -> @ast.item {
+impure fn parse_type_decl(parser p) -> tup(span, ast.ident) {
     auto lo = p.get_span();
     expect(p, token.TYPE);
     auto id = parse_ident(p);
+    ret tup(lo, id);
+}
+
+impure fn parse_item_type(parser p) -> @ast.item {
+    auto t = parse_type_decl(p);
     auto tps = parse_ty_params(p);
 
     expect(p, token.EQ);
     auto ty = parse_ty(p);
     auto hi = p.get_span();
     expect(p, token.SEMI);
-    auto item = ast.item_ty(id, ty, tps, p.next_def_id(), ast.ann_none);
-    ret @spanned(lo, hi, item);
+    auto item = ast.item_ty(t._1, ty, tps, p.next_def_id(), ast.ann_none);
+    ret @spanned(t._0, hi, item);
 }
 
 impure fn parse_item_tag(parser p) -> @ast.item {