aboutsummaryrefslogtreecommitdiff
path: root/src/comp/front
diff options
context:
space:
mode:
authorMarijn Haverbeke <[email protected]>2011-04-18 09:22:23 +0200
committerMarijn Haverbeke <[email protected]>2011-04-18 15:28:47 +0200
commit0bf75a203e6611f0b0293c3fc08a6f2ee3a5f1ba (patch)
tree158b96caa1d2590f84238a10650fa3aba14a8bab /src/comp/front
parentmove rust_crate structure into the actual crate code (diff)
downloadrust-0bf75a203e6611f0b0293c3fc08a6f2ee3a5f1ba.tar.xz
rust-0bf75a203e6611f0b0293c3fc08a6f2ee3a5f1ba.zip
collect crate meta info and ext crate names
Diffstat (limited to 'src/comp/front')
-rw-r--r--src/comp/front/creader.rs10
-rw-r--r--src/comp/front/eval.rs5
2 files changed, 9 insertions, 6 deletions
diff --git a/src/comp/front/creader.rs b/src/comp/front/creader.rs
index b7015380..55b40cce 100644
--- a/src/comp/front/creader.rs
+++ b/src/comp/front/creader.rs
@@ -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);
diff --git a/src/comp/front/eval.rs b/src/comp/front/eval.rs
index ca350c36..8306bcf0 100644
--- a/src/comp/front/eval.rs
+++ b/src/comp/front/eval.rs
@@ -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)) {}
}