From 567a45cc70424b77cac489940a36ff8a6ea97b84 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Tue, 30 Nov 2010 12:32:20 -0800 Subject: rustc: Add def ids to variants --- src/comp/front/ast.rs | 3 ++- src/comp/front/parser.rs | 3 ++- src/comp/middle/fold.rs | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/comp/front/ast.rs b/src/comp/front/ast.rs index a1670c70..25cea29e 100644 --- a/src/comp/front/ast.rs +++ b/src/comp/front/ast.rs @@ -30,6 +30,7 @@ tag def { def_const(def_id); def_arg(def_id); def_local(def_id); + def_variant(def_id); def_ty(def_id); def_ty_arg(def_id); } @@ -173,7 +174,7 @@ type _fn = rec(vec[arg] inputs, type _mod = rec(vec[@item] items, hashmap[ident,uint] index); -type variant = rec(str name, vec[@ty] args); +type variant = rec(str name, vec[@ty] args, def_id id); type item = spanned[item_]; tag item_ { diff --git a/src/comp/front/parser.rs b/src/comp/front/parser.rs index b23fa0aa..91124dc1 100644 --- a/src/comp/front/parser.rs +++ b/src/comp/front/parser.rs @@ -1260,7 +1260,8 @@ impure fn parse_item_tag(parser p) -> tup(ast.ident, @ast.item) { expect(p, token.SEMI); - variants += vec(rec(name=name, args=args)); + auto id = p.next_def_id(); + variants += vec(rec(name=name, args=args, id=id)); } case (token.RBRACE) { /* empty */ } case (_) { diff --git a/src/comp/middle/fold.rs b/src/comp/middle/fold.rs index c97dceb4..61573a57 100644 --- a/src/comp/middle/fold.rs +++ b/src/comp/middle/fold.rs @@ -594,7 +594,7 @@ fn fold_item[ENV](&ENV env, ast_fold[ENV] fld, @item i) -> @item { for (@ast.ty t in v.args) { new_args += vec(fold_ty[ENV](env_, fld, t)); } - new_variants += rec(name=v.name, args=new_args); + new_variants += rec(name=v.name, args=new_args, id=v.id); } ret fld.fold_item_tag(env_, i.span, ident, new_variants, ty_params, id); -- cgit v1.2.3