Key tcx.ty_param_bounds on node_ids, not def_ids
This makes it clearer that it's only valid for local nodes.
This commit is contained in:
parent
9f2369dc9f
commit
3a1710d21e
4 changed files with 11 additions and 9 deletions
|
|
@ -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 @@ type ctxt =
|
|||
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 mk_ctxt(s: session::session, dm: resolve::def_map, amap: ast_map::map,
|
|||
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(_, _) {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue