Sketch trans_vtbl.
This commit is contained in:
parent
bfdba2dbcc
commit
a3f828f941
@ -199,10 +199,10 @@ type _fn = rec(effect effect,
|
||||
block body);
|
||||
|
||||
|
||||
type method_ = rec(ident ident, _fn meth, def_id id);
|
||||
type method_ = rec(ident ident, _fn meth, def_id id, ann ann);
|
||||
type method = spanned[method_];
|
||||
|
||||
type obj_field = rec(@ty ty, ident ident, def_id id);
|
||||
type obj_field = rec(@ty ty, ident ident, def_id id, ann ann);
|
||||
type _obj = rec(vec[obj_field] fields,
|
||||
vec[@method] methods);
|
||||
|
||||
|
@ -1285,7 +1285,7 @@ impure fn parse_item_fn(parser p, ast.effect eff) -> @ast.item {
|
||||
impure fn parse_obj_field(parser p) -> ast.obj_field {
|
||||
auto ty = parse_ty(p);
|
||||
auto ident = parse_ident(p);
|
||||
ret rec(ty=ty, ident=ident, id=p.next_def_id());
|
||||
ret rec(ty=ty, ident=ident, id=p.next_def_id(), ann=ast.ann_none);
|
||||
}
|
||||
|
||||
impure fn parse_method(parser p) -> @ast.method {
|
||||
@ -1294,7 +1294,8 @@ impure fn parse_method(parser p) -> @ast.method {
|
||||
expect(p, token.FN);
|
||||
auto ident = parse_ident(p);
|
||||
auto f = parse_fn(p, eff);
|
||||
auto meth = rec(ident = ident, meth = f, id = p.next_def_id());
|
||||
auto meth = rec(ident=ident, meth=f,
|
||||
id=p.next_def_id(), ann=ast.ann_none);
|
||||
ret @spanned(lo, f.body.span, meth);
|
||||
}
|
||||
|
||||
|
@ -2307,6 +2307,15 @@ impure fn trans_fn(@crate_ctxt cx, &ast._fn f, ast.def_id fid,
|
||||
}
|
||||
}
|
||||
|
||||
impure fn trans_vtbl(@crate_ctxt cx, &ast._obj ob) -> ValueRef {
|
||||
let vec[ValueRef] methods = vec();
|
||||
for (@ast.method m in ob.methods) {
|
||||
trans_fn(cx, m.node.meth, m.node.id, m.node.ann);
|
||||
methods += cx.item_ids.get(m.node.id);
|
||||
}
|
||||
ret C_struct(methods);
|
||||
}
|
||||
|
||||
fn trans_obj(@crate_ctxt cx, &ast._obj ob, ast.def_id oid,
|
||||
&ast.ann ann) {
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user