diff options
| author | Graydon Hoare <[email protected]> | 2011-03-29 13:21:16 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2011-03-29 13:23:51 -0700 |
| commit | 734abe593dc09edaea0f24978acf4f4270337361 (patch) | |
| tree | eaac6bb58a955617ec1ac47e031002a97931ac40 /src/comp/front/creader.rs | |
| parent | XFAIL nbody on darwin, quiet tinderbox for now. (diff) | |
| download | rust-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.rs | 17 |
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; |