aboutsummaryrefslogtreecommitdiff
path: root/src/comp/front/creader.rs
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2011-03-29 13:21:16 -0700
committerGraydon Hoare <[email protected]>2011-03-29 13:23:51 -0700
commit734abe593dc09edaea0f24978acf4f4270337361 (patch)
treeeaac6bb58a955617ec1ac47e031002a97931ac40 /src/comp/front/creader.rs
parentXFAIL nbody on darwin, quiet tinderbox for now. (diff)
downloadrust-734abe593dc09edaea0f24978acf4f4270337361.tar.xz
rust-734abe593dc09edaea0f24978acf4f4270337361.zip
Teach trans to emit undefined references to 'use'd symbols. Can compile and run a simple 'use std;' example now.
Diffstat (limited to 'src/comp/front/creader.rs')
-rw-r--r--src/comp/front/creader.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/comp/front/creader.rs b/src/comp/front/creader.rs
index dae18cb4..735dbcb4 100644
--- a/src/comp/front/creader.rs
+++ b/src/comp/front/creader.rs
@@ -403,6 +403,16 @@ impure fn get_item_kind(&ebml.reader ebml_r) -> u8 {
ret get_item_generic[u8](ebml_r, metadata.tag_items_kind, f);
}
+impure fn get_item_symbol(&ebml.reader ebml_r) -> str {
+ impure fn converter(vec[u8] data) -> str {
+ auto x = @mutable 3;
+ *x = 5;
+ ret _str.unsafe_from_bytes(data);
+ }
+ auto f = converter;
+ ret get_item_generic[str](ebml_r, metadata.tag_items_symbol, f);
+}
+
// FIXME: This is a *terrible* botch.
impure fn impure_parse_def_id(vec[u8] data) -> ast.def_id {
auto x = @mutable 3;
@@ -573,6 +583,13 @@ fn get_type(session.session sess, ast.def_id def) -> ty.ty_params_and_ty {
ret tup(tps, t);
}
+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 ebml_r = lookup_item(def._1, data);
+ ret get_item_symbol(ebml_r);
+}
+
// Local Variables:
// mode: rust
// fill-column: 78;