提交 3a1710d2 编写于 作者: M Marijn Haverbeke

Key tcx.ty_param_bounds on node_ids, not def_ids

This makes it clearer that it's only valid for local nodes.
上级 9f2369dc
......@@ -190,7 +190,7 @@ fn encode_type_param_bounds(ebml_w: ebml::writer, ecx: @encode_ctxt,
abbrevs: tyencode::ac_use_abbrevs(ecx.type_abbrevs)};
for param in params {
ebml::start_tag(ebml_w, tag_items_data_item_ty_param_bounds);
let bs = ecx.ccx.tcx.ty_param_bounds.get(local_def(param.id));
let bs = ecx.ccx.tcx.ty_param_bounds.get(param.id);
tyencode::enc_bounds(io::new_writer(ebml_w.writer), ty_str_ctxt, bs);
ebml::end_tag(ebml_w);
}
......
......@@ -5093,7 +5093,7 @@ fn register_fn(ccx: @crate_ctxt, sp: span, path: [str], flav: str,
}
fn param_bounds(ccx: @crate_ctxt, tp: ast::ty_param) -> ty::param_bounds {
ccx.tcx.ty_param_bounds.get(ast_util::local_def(tp.id))
ccx.tcx.ty_param_bounds.get(tp.id)
}
fn register_fn_full(ccx: @crate_ctxt, sp: span, path: [str], _flav: str,
......
......@@ -222,7 +222,7 @@
ast_ty_to_ty_cache: hashmap<@ast::ty, option::t<t>>,
tag_var_cache: hashmap<def_id, @[variant_info]>,
iface_method_cache: hashmap<def_id, @[method]>,
ty_param_bounds: hashmap<def_id, param_bounds>};
ty_param_bounds: hashmap<ast::node_id, param_bounds>};
type ty_ctxt = ctxt;
......@@ -441,7 +441,7 @@ fn eq_raw_ty(&&a: @raw_t, &&b: @raw_t) -> bool {
map::mk_hashmap(ast_util::hash_ty, ast_util::eq_ty),
tag_var_cache: new_def_hash(),
iface_method_cache: new_def_hash(),
ty_param_bounds: new_def_hash()};
ty_param_bounds: map::new_int_hash()};
populate_type_store(cx);
ret cx;
}
......@@ -1085,7 +1085,9 @@ fn type_kind(cx: ctxt, ty: t) -> kind {
}
// Resources are always noncopyable.
ty_res(did, inner, tps) { kind_noncopyable }
ty_param(_, did) { param_bounds_to_kind(cx.ty_param_bounds.get(did)) }
ty_param(_, did) {
param_bounds_to_kind(cx.ty_param_bounds.get(did.node))
}
ty_constr(t, _) { type_kind(cx, t) }
};
......
......@@ -507,7 +507,7 @@ fn ty_param_bounds(tcx: ty::ctxt, mode: mode, params: [ast::ty_param])
-> @[ty::param_bounds] {
let result = [];
for param in params {
result += [alt tcx.ty_param_bounds.find(local_def(param.id)) {
result += [alt tcx.ty_param_bounds.find(param.id) {
some(bs) { bs }
none. {
let bounds = [];
......@@ -521,7 +521,7 @@ fn ty_param_bounds(tcx: ty::ctxt, mode: mode, params: [ast::ty_param])
}];
}
let boxed = @bounds;
tcx.ty_param_bounds.insert(local_def(param.id), boxed);
tcx.ty_param_bounds.insert(param.id, boxed);
boxed
}
}];
......@@ -1493,7 +1493,7 @@ fn lookup_method(fcx: @fn_ctxt, isc: resolve::iscopes,
// First, see whether this is an interface-bounded parameter
alt ty::struct(tcx, ty) {
ty::ty_param(n, did) {
for bound in *tcx.ty_param_bounds.get(did) {
for bound in *tcx.ty_param_bounds.get(did.node) {
alt bound {
ty::bound_iface(t) {
let (iid, _tps) = alt ty::struct(tcx, t) {
......@@ -2789,7 +2789,7 @@ fn check_ty_params(ccx: @crate_ctxt, tps: [ast::ty_param]) {
for bound in *tp.bounds {
alt bound {
ast::bound_iface(at) {
let tbound = ccx.tcx.ty_param_bounds.get(local_def(tp.id))[i];
let tbound = ccx.tcx.ty_param_bounds.get(tp.id)[i];
let bound_ty = alt tbound { ty::bound_iface(t) { t } };
alt ty::struct(ccx.tcx, bound_ty) {
ty::ty_iface(_, _) {}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册