aboutsummaryrefslogtreecommitdiff
path: root/src/comp/front/parser.rs
diff options
context:
space:
mode:
authorRafael Ávila de Espíndola <[email protected]>2011-02-04 09:46:10 -0500
committerRafael Ávila de Espíndola <[email protected]>2011-02-04 09:46:10 -0500
commit302cafa81dcc868e840c78f2bfbf41929de8a487 (patch)
treebfc383e61d2ec8ceb88cc105036409a6b4414813 /src/comp/front/parser.rs
parentCapture typarams into obj, independent of body tydesc. (diff)
downloadrust-302cafa81dcc868e840c78f2bfbf41929de8a487.tar.xz
rust-302cafa81dcc868e840c78f2bfbf41929de8a487.zip
Factor the parsing of "type foo" into parse_type_decl.
Diffstat (limited to 'src/comp/front/parser.rs')
-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 c088e68d..1d54a6e1 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 {