aboutsummaryrefslogtreecommitdiff
path: root/src/boot/driver/main.ml
diff options
context:
space:
mode:
authorPatrick Walton <[email protected]>2010-09-08 15:38:07 -0700
committerPatrick Walton <[email protected]>2010-09-08 15:38:39 -0700
commit2172a3bcf44bbecfe9469451cdaed96b5beee71e (patch)
tree58e7d09ae2b352733e56d0244d8aa0851e5737c7 /src/boot/driver/main.ml
parentCleaned up locking in the kernel. (diff)
downloadrust-2172a3bcf44bbecfe9469451cdaed96b5beee71e.tar.xz
rust-2172a3bcf44bbecfe9469451cdaed96b5beee71e.zip
First lame stab at solving the diamond import problem
Diffstat (limited to 'src/boot/driver/main.ml')
-rw-r--r--src/boot/driver/main.ml9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/boot/driver/main.ml b/src/boot/driver/main.ml
index 199a3729..1e4c28e8 100644
--- a/src/boot/driver/main.ml
+++ b/src/boot/driver/main.ml
@@ -239,7 +239,9 @@ let _ =
;;
-let parse_input_crate _ : Ast.crate =
+let parse_input_crate
+ (crate_cache:(crate_id, Ast.mod_items) Hashtbl.t)
+ : Ast.crate =
Session.time_inner "parse" sess
begin
fun _ ->
@@ -250,12 +252,14 @@ let parse_input_crate _ : Ast.crate =
Cexp.parse_crate_file sess
(Lib.get_mod sess abi)
(Lib.infer_lib_name sess)
+ crate_cache
else
if Filename.check_suffix infile ".rs"
then
Cexp.parse_src_file sess
(Lib.get_mod sess abi)
(Lib.infer_lib_name sess)
+ crate_cache
else
begin
Printf.fprintf stderr
@@ -295,7 +299,8 @@ let parse_input_crate _ : Ast.crate =
let (crate:Ast.crate) =
try
- parse_input_crate()
+ let crate_cache = Hashtbl.create 1 in
+ parse_input_crate crate_cache
with
Not_implemented (ido, str) ->
Session.report_err sess ido str;