diff options
| author | Patrick Walton <[email protected]> | 2010-09-08 15:38:07 -0700 |
|---|---|---|
| committer | Patrick Walton <[email protected]> | 2010-09-08 15:38:39 -0700 |
| commit | 2172a3bcf44bbecfe9469451cdaed96b5beee71e (patch) | |
| tree | 58e7d09ae2b352733e56d0244d8aa0851e5737c7 /src/boot/driver/main.ml | |
| parent | Cleaned up locking in the kernel. (diff) | |
| download | rust-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.ml | 9 |
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; |