Add a map from external cnums to local cnums in cstore::crate_metadata
Once populated, this will allow us to load type info for types defined in external crates referenced by other external crates.
This commit is contained in:
parent
061bcb2e42
commit
dd8ab24da2
@ -22,6 +22,7 @@ import std::option;
|
||||
import std::option::none;
|
||||
import std::option::some;
|
||||
import std::map::hashmap;
|
||||
import std::map::new_int_hash;
|
||||
import syntax::print::pprust;
|
||||
import common::*;
|
||||
|
||||
@ -225,8 +226,10 @@ fn load_library_crate(&session::session sess, span span, ast::crate_num cnum,
|
||||
alt (find_library_crate(sess, ident, metas, library_search_paths)) {
|
||||
case (some(?t)) {
|
||||
auto cstore = sess.get_cstore();
|
||||
cstore::set_crate_data(cstore, cnum,
|
||||
rec(name=ident, data=t._1));
|
||||
auto cmeta = rec(name=ident,
|
||||
data=t._1,
|
||||
cnum_map = new_int_hash[ast::crate_num]());
|
||||
cstore::set_crate_data(cstore, cnum, cmeta);
|
||||
cstore::add_used_crate_file(cstore, t._0);
|
||||
ret;
|
||||
}
|
||||
|
@ -6,7 +6,15 @@ import std::vec;
|
||||
import std::str;
|
||||
import syntax::ast;
|
||||
|
||||
type crate_metadata = rec(str name, vec[u8] data);
|
||||
// A map from external crate numbers (as decoded from some crate file) to
|
||||
// local crate numbers (as generated during this session). Each external
|
||||
// crate may refer to types in other external crates, and each has their
|
||||
// own crate numbers.
|
||||
type cnum_map = map::hashmap[ast::crate_num, ast::crate_num];
|
||||
|
||||
type crate_metadata = rec(str name,
|
||||
vec[u8] data,
|
||||
cnum_map cnum_map);
|
||||
|
||||
// Map from node_id's of local use statements to crate numbers
|
||||
type use_crate_map = map::hashmap[ast::node_id, ast::crate_num];
|
||||
|
Loading…
x
Reference in New Issue
Block a user