rustc: Store cached crate metadata in the session
This commit is contained in:
parent
9ca7acb1f3
commit
e2d6475308
6 changed files with 37 additions and 35 deletions
|
|
@ -265,7 +265,7 @@ type ast_fold[ENV] =
|
|||
// View Item folds.
|
||||
(fn(&ENV e, &span sp, ident ident,
|
||||
vec[@meta_item] meta_items,
|
||||
def_id id, ann a) -> @view_item) fold_view_item_use,
|
||||
def_id id, option.t[int]) -> @view_item) fold_view_item_use,
|
||||
|
||||
(fn(&ENV e, &span sp, ident i, vec[ident] idents,
|
||||
def_id id, option.t[def]) -> @view_item) fold_view_item_import,
|
||||
|
|
@ -883,9 +883,9 @@ fn fold_view_item[ENV](&ENV env, ast_fold[ENV] fld, @view_item vi)
|
|||
}
|
||||
|
||||
alt (vi.node) {
|
||||
case (ast.view_item_use(?ident, ?meta_items, ?def_id, ?ann)) {
|
||||
case (ast.view_item_use(?ident, ?meta_items, ?def_id, ?cnum)) {
|
||||
ret fld.fold_view_item_use(env_, vi.span, ident, meta_items,
|
||||
def_id, ann);
|
||||
def_id, cnum);
|
||||
}
|
||||
case (ast.view_item_import(?def_ident, ?idents, ?def_id,
|
||||
?target_def)) {
|
||||
|
|
@ -1400,8 +1400,9 @@ fn identity_fold_item_obj[ENV](&ENV e, &span sp, ident i,
|
|||
|
||||
fn identity_fold_view_item_use[ENV](&ENV e, &span sp, ident i,
|
||||
vec[@meta_item] meta_items,
|
||||
def_id id, ann a) -> @view_item {
|
||||
ret @respan(sp, ast.view_item_use(i, meta_items, id, a));
|
||||
def_id id, option.t[int] cnum)
|
||||
-> @view_item {
|
||||
ret @respan(sp, ast.view_item_use(i, meta_items, id, cnum));
|
||||
}
|
||||
|
||||
fn identity_fold_view_item_import[ENV](&ENV e, &span sp, ident i,
|
||||
|
|
|
|||
|
|
@ -137,11 +137,10 @@ fn find_final_def(&env e, import_map index,
|
|||
}
|
||||
|
||||
fn found_crate(&env e, &import_map index, &span sp,
|
||||
vec[ident] idents,
|
||||
@ast.external_crate_info cinfo) -> def_wrap {
|
||||
vec[ident] idents, int cnum) -> def_wrap {
|
||||
auto len = _vec.len[ident](idents);
|
||||
auto rest_idents = _vec.slice[ident](idents, 1u, len);
|
||||
auto def = creader.lookup_def(sp, cinfo, rest_idents);
|
||||
auto def = creader.lookup_def(e.sess, sp, cnum, rest_idents);
|
||||
ret def_wrap_other(def);
|
||||
}
|
||||
|
||||
|
|
@ -171,12 +170,9 @@ fn find_final_def(&env e, import_map index,
|
|||
}
|
||||
case (def_wrap_use(?vi)) {
|
||||
alt (vi.node) {
|
||||
case (ast.view_item_use(_, _, _, ?ann)) {
|
||||
alt (ann) {
|
||||
case (ast.ann_crate(?cinfo)) {
|
||||
ret found_crate(e, index, sp, idents, cinfo);
|
||||
}
|
||||
}
|
||||
case (ast.view_item_use(_, _, _, ?cnum_opt)) {
|
||||
auto cnum = option.get[int](cnum_opt);
|
||||
ret found_crate(e, index, sp, idents, cnum);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue