aboutsummaryrefslogtreecommitdiff
path: root/src/comp/front
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp/front')
-rw-r--r--src/comp/front/ast.rs7
-rw-r--r--src/comp/front/parser.rs10
2 files changed, 11 insertions, 6 deletions
diff --git a/src/comp/front/ast.rs b/src/comp/front/ast.rs
index 450cc933..fae90392 100644
--- a/src/comp/front/ast.rs
+++ b/src/comp/front/ast.rs
@@ -385,7 +385,8 @@ type native_mod = rec(str native_name,
type native_mod_index = hashmap[ident,native_mod_index_entry];
type variant_arg = rec(@ty ty, def_id id);
-type variant = rec(str name, vec[variant_arg] args, def_id id, ann ann);
+type variant_ = rec(str name, vec[variant_arg] args, def_id id, ann ann);
+type variant = spanned[variant_];
type view_item = spanned[view_item_];
tag view_item_ {
@@ -451,7 +452,7 @@ fn index_item(mod_index index, @item it) {
index.insert(id, ast.mie_item(it));
let uint variant_idx = 0u;
for (ast.variant v in variants) {
- index.insert(v.name,
+ index.insert(v.node.name,
ast.mie_tag_variant(it, variant_idx));
variant_idx += 1u;
}
@@ -509,7 +510,7 @@ fn index_stmt(block_index index, @stmt s) {
let uint vid = 0u;
for (ast.variant v in variants) {
auto t = ast.bie_tag_variant(it, vid);
- index.insert(v.name, t);
+ index.insert(v.node.name, t);
vid += 1u;
}
}
diff --git a/src/comp/front/parser.rs b/src/comp/front/parser.rs
index cc3388b3..8562c56a 100644
--- a/src/comp/front/parser.rs
+++ b/src/comp/front/parser.rs
@@ -451,7 +451,9 @@ impure fn parse_ty(parser p) -> @ast.ty {
}
case (token.IDENT(_)) {
- t = ast.ty_path(parse_path(p, GREEDY), none[ast.def]);
+ auto path = parse_path(p, GREEDY);
+ t = ast.ty_path(path, none[ast.def]);
+ hi = path.span;
}
case (token.MUTABLE) {
@@ -2067,6 +2069,7 @@ impure fn parse_item_tag(parser p) -> @ast.item {
auto tok = p.peek();
alt (tok) {
case (token.IDENT(?name)) {
+ auto vlo = p.get_span();
p.bump();
let vec[ast.variant_arg] args = vec();
@@ -2084,11 +2087,12 @@ impure fn parse_item_tag(parser p) -> @ast.item {
case (_) { /* empty */ }
}
+ auto vhi = p.get_span();
expect(p, token.SEMI);
auto id = p.next_def_id();
- variants += vec(rec(name=name, args=args, id=id,
- ann=ast.ann_none));
+ auto vr = rec(name=name, args=args, id=id, ann=ast.ann_none);
+ variants += vec(spanned[ast.variant_](vlo, vhi, vr));
}
case (token.RBRACE) { /* empty */ }
case (_) {