aboutsummaryrefslogtreecommitdiff
path: root/src/comp/driver
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp/driver')
-rw-r--r--src/comp/driver/rustc.rs5
-rw-r--r--src/comp/driver/session.rs13
2 files changed, 16 insertions, 2 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs
index f0ce9a95..b91d0914 100644
--- a/src/comp/driver/rustc.rs
+++ b/src/comp/driver/rustc.rs
@@ -9,6 +9,7 @@ import middle.resolve;
import middle.typeck;
import util.common;
+import std.map.mk_hashmap;
import std.option;
import std.option.some;
import std.option.none;
@@ -112,7 +113,9 @@ impure fn main(vec[str] args) {
uint_type = common.ty_u32,
float_type = common.ty_f64 );
- auto sess = session.session(target_cfg);
+ auto crate_cache = common.new_int_hash[session.crate_metadata]();
+
+ auto sess = session.session(target_cfg, crate_cache);
let option.t[str] input_file = none[str];
let option.t[str] output_file = none[str];
let vec[str] library_search_paths = vec();
diff --git a/src/comp/driver/session.rs b/src/comp/driver/session.rs
index 95f7466d..7ad83dc1 100644
--- a/src/comp/driver/session.rs
+++ b/src/comp/driver/session.rs
@@ -1,6 +1,7 @@
import util.common.span;
import util.common.ty_mach;
import std._uint;
+import std.map;
tag os {
os_win32;
@@ -20,7 +21,9 @@ type cfg = rec(os os,
ty_mach uint_type,
ty_mach float_type);
-obj session(cfg targ) {
+type crate_metadata = vec[u8];
+
+obj session(cfg targ, map.hashmap[int, crate_metadata] crates) {
fn get_targ_cfg() -> cfg {
ret targ;
@@ -66,6 +69,14 @@ obj session(cfg targ) {
log #fmt("error: unimplemented %s", msg);
fail;
}
+
+ fn get_external_crate(int num) -> crate_metadata {
+ ret crates.get(num);
+ }
+
+ fn set_external_crate(int num, &crate_metadata metadata) {
+ crates.insert(num, metadata);
+ }
}