aboutsummaryrefslogtreecommitdiff
path: root/src/comp
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/front/ast.rs3
-rw-r--r--src/comp/front/parser.rs3
-rw-r--r--src/comp/middle/fold.rs2
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);