collect crate meta info and ext crate names
This commit is contained in:
parent
0984d1db2e
commit
0bf75a203e
4 changed files with 24 additions and 11 deletions
|
|
@ -128,8 +128,9 @@ impure fn main(vec[str] args) {
|
|||
|
||||
auto crate_cache = common.new_int_hash[session.crate_metadata]();
|
||||
auto target_crate_num = 0;
|
||||
let vec[@front.ast.meta_item] md = vec();
|
||||
auto sess = session.session(target_crate_num, target_cfg, crate_cache,
|
||||
front.codemap.new_codemap());
|
||||
md, front.codemap.new_codemap());
|
||||
|
||||
let option.t[str] input_file = none[str];
|
||||
let option.t[str] output_file = none[str];
|
||||
|
|
|
|||
|
|
@ -23,11 +23,13 @@ type cfg = rec(os os,
|
|||
ty_mach uint_type,
|
||||
ty_mach float_type);
|
||||
|
||||
type crate_metadata = vec[u8];
|
||||
type crate_metadata = rec(str name,
|
||||
vec[u8] data);
|
||||
|
||||
obj session(ast.crate_num cnum, cfg targ,
|
||||
map.hashmap[int, crate_metadata] crates,
|
||||
codemap.codemap cm) {
|
||||
state obj session(ast.crate_num cnum, cfg targ,
|
||||
map.hashmap[int, crate_metadata] crates,
|
||||
mutable vec[@ast.meta_item] metadata,
|
||||
codemap.codemap cm) {
|
||||
|
||||
fn get_targ_cfg() -> cfg {
|
||||
ret targ;
|
||||
|
|
@ -53,6 +55,13 @@ obj session(ast.crate_num cnum, cfg targ,
|
|||
fail;
|
||||
}
|
||||
|
||||
fn add_metadata(vec[@ast.meta_item] data) {
|
||||
metadata = metadata + data;
|
||||
}
|
||||
fn get_metadata() -> vec[@ast.meta_item] {
|
||||
ret metadata;
|
||||
}
|
||||
|
||||
fn span_warn(span sp, str msg) {
|
||||
auto lo = codemap.lookup_pos(cm, sp.lo);
|
||||
auto hi = codemap.lookup_pos(cm, sp.hi);
|
||||
|
|
|
|||
|
|
@ -400,7 +400,7 @@ fn load_crate(session.session sess,
|
|||
auto path = fs.connect(library_search_path, filename);
|
||||
alt (get_metadata_section(path)) {
|
||||
case (option.some[vec[u8]](?cvec)) {
|
||||
sess.set_external_crate(cnum, cvec);
|
||||
sess.set_external_crate(cnum, rec(name=ident, data=cvec));
|
||||
ret;
|
||||
}
|
||||
case (_) {}
|
||||
|
|
@ -470,7 +470,7 @@ fn kind_has_type_params(u8 kind_ch) -> bool {
|
|||
|
||||
fn lookup_def(session.session sess, int cnum, vec[ast.ident] path)
|
||||
-> option.t[ast.def] {
|
||||
auto data = sess.get_external_crate(cnum);
|
||||
auto data = sess.get_external_crate(cnum).data;
|
||||
|
||||
auto did;
|
||||
alt (resolve_path(path, data)) {
|
||||
|
|
@ -513,7 +513,7 @@ fn lookup_def(session.session sess, int cnum, vec[ast.ident] path)
|
|||
fn get_type(session.session sess, ast.def_id def)
|
||||
-> ty.ty_param_count_and_ty {
|
||||
auto external_crate_id = def._0;
|
||||
auto data = sess.get_external_crate(external_crate_id);
|
||||
auto data = sess.get_external_crate(external_crate_id).data;
|
||||
auto item = lookup_item(def._1, data);
|
||||
auto t = item_type(item, external_crate_id);
|
||||
|
||||
|
|
@ -531,7 +531,7 @@ fn get_type(session.session sess, ast.def_id def)
|
|||
|
||||
fn get_symbol(session.session sess, ast.def_id def) -> str {
|
||||
auto external_crate_id = def._0;
|
||||
auto data = sess.get_external_crate(external_crate_id);
|
||||
auto data = sess.get_external_crate(external_crate_id).data;
|
||||
auto item = lookup_item(def._1, data);
|
||||
ret item_symbol(item);
|
||||
}
|
||||
|
|
@ -539,7 +539,7 @@ fn get_symbol(session.session sess, ast.def_id def) -> str {
|
|||
fn get_tag_variants(session.session sess, ast.def_id def)
|
||||
-> vec[trans.variant_info] {
|
||||
auto external_crate_id = def._0;
|
||||
auto data = sess.get_external_crate(external_crate_id);
|
||||
auto data = sess.get_external_crate(external_crate_id).data;
|
||||
auto items = ebml.get_doc(ebml.new_doc(data), metadata.tag_items);
|
||||
auto item = find_item(def._1, items);
|
||||
|
||||
|
|
|
|||
|
|
@ -419,7 +419,10 @@ impure fn eval_crate_directive(ctx cx,
|
|||
ast.index_view_item(index, vi);
|
||||
}
|
||||
|
||||
case (ast.cdir_meta(?mi)) {}
|
||||
case (ast.cdir_meta(?mi)) {
|
||||
cx.sess.add_metadata(mi);
|
||||
}
|
||||
|
||||
case (ast.cdir_syntax(?pth)) {}
|
||||
case (ast.cdir_auth(?pth, ?eff)) {}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue