diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-01-26 15:20:29 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-01-26 16:23:48 -0800 |
| commit | 5610205363eb56b2fd7ce6daeaa3b20a659398a5 (patch) | |
| tree | f23c090f818a34e744807d563b69b2b9ec5b9be7 /src/comp/front | |
| parent | 335302f08dbdffd218cbc9fcbfb650cfa273889b (diff) | |
| download | rust-5610205363eb56b2fd7ce6daeaa3b20a659398a5.tar.gz rust-5610205363eb56b2fd7ce6daeaa3b20a659398a5.zip | |
rustc: Move core injection to its own module
Diffstat (limited to 'src/comp/front')
| -rw-r--r-- | src/comp/front/core_inject.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/comp/front/core_inject.rs b/src/comp/front/core_inject.rs new file mode 100644 index 00000000000..8e88bd50068 --- /dev/null +++ b/src/comp/front/core_inject.rs @@ -0,0 +1,35 @@ +import driver::session::session; +import syntax::ast; +import syntax::codemap; + +export maybe_inject_libcore_ref; + +fn maybe_inject_libcore_ref(sess: session, + crate: @ast::crate) -> @ast::crate { + if sess.opts.libcore { + inject_libcore_ref(sess, crate) + } else { + crate + } +} + +fn inject_libcore_ref(sess: session, + crate: @ast::crate) -> @ast::crate { + + fn spanned<T: copy>(x: T) -> @ast::spanned<T> { + ret @{node: x, + span: {lo: 0u, hi: 0u, + expanded_from: codemap::os_none}}; + } + + let n1 = sess.next_node_id(); + let n2 = sess.next_node_id(); + + let vi1 = spanned(ast::view_item_use("core", [], n1)); + let vi2 = spanned(ast::view_item_import_glob(@["core"], n2)); + + let vis = [vi1, vi2] + crate.node.module.view_items; + + ret @{node: {module: { view_items: vis with crate.node.module } + with crate.node} with *crate } +} |
