diff options
Diffstat (limited to 'src/comp/front')
| -rw-r--r-- | src/comp/front/ast.rs | 7 | ||||
| -rw-r--r-- | src/comp/front/parser.rs | 10 |
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 (_) { |