Skip to content

Commit d0bbd7d

Browse files
committed
---
yaml --- r: 638 b: refs/heads/master c: ffdb5fc h: refs/heads/master v: v3
1 parent 0a04533 commit d0bbd7d

File tree

7 files changed

+23
-7
lines changed

7 files changed

+23
-7
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: ca1475382e592176884187877a80900578bcf72b
2+
refs/heads/master: ffdb5fc8582c77eef7b3a30859eaa216872525a4

trunk/src/boot/driver/lib.ml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ let get_sects
5959
let get_meta
6060
(sess:Session.sess)
6161
(filename:filename)
62-
: Ast.meta option =
62+
: Session.meta option =
6363
htab_search_or_add meta_cache filename
6464
begin
6565
fun _ ->
@@ -190,6 +190,10 @@ let get_mod
190190
match get_meta sess file with
191191
None -> ()
192192
| Some meta ->
193+
if not (Hashtbl.mem
194+
sess.Session.sess_crate_meta meta) then
195+
Hashtbl.add sess.Session.sess_crate_meta
196+
meta (Session.make_crate_id sess);
193197
Array.iter
194198
(fun (k,v) -> log sess "%s = %S" k v)
195199
meta;

trunk/src/boot/driver/main.ml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,10 @@ let (sess:Session.sess) =
5858
Session.sess_report_timing = false;
5959
Session.sess_report_gc = false;
6060
Session.sess_report_deps = false;
61+
Session.sess_next_crate_id = 0;
6162
Session.sess_timings = Hashtbl.create 0;
6263
Session.sess_lib_dirs = Queue.create ();
64+
Session.sess_crate_meta = Hashtbl.create 0;
6365
}
6466
;;
6567

trunk/src/boot/driver/session.ml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
open Common;;
77

8+
type meta = (string * string) array;;
9+
810
type sess =
911
{
1012
mutable sess_in: filename option;
@@ -41,9 +43,11 @@ type sess =
4143
mutable sess_report_timing: bool;
4244
mutable sess_report_gc: bool;
4345
mutable sess_report_deps: bool;
46+
mutable sess_next_crate_id: int;
4447
sess_timings: (string, float) Hashtbl.t;
4548
sess_spans: (node_id,span) Hashtbl.t;
4649
sess_lib_dirs: filename Queue.t;
50+
sess_crate_meta: (meta, crate_id) Hashtbl.t;
4751
}
4852
;;
4953

@@ -115,6 +119,12 @@ let report_err sess ido str =
115119
(string_of_span span) str
116120
;;
117121

122+
let make_crate_id (sess:sess) : crate_id =
123+
let crate_id = Crate sess.sess_next_crate_id in
124+
sess.sess_next_crate_id <- sess.sess_next_crate_id + 1;
125+
crate_id
126+
;;
127+
118128
(*
119129
* Local Variables:
120130
* fill-column: 78;

trunk/src/boot/fe/ast.ml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -452,14 +452,12 @@ and mod_view =
452452
view_exports: (export, unit) Hashtbl.t;
453453
}
454454

455-
and meta = (ident * string) array
456-
457-
and meta_pat = (ident * string option) array
455+
and meta_pat = (string * string option) array
458456

459457
and crate' =
460458
{
461459
crate_items: (mod_view * mod_items);
462-
crate_meta: meta;
460+
crate_meta: Session.meta;
463461
crate_auth: (name, effect) Hashtbl.t;
464462
crate_required: (node_id, (required_lib * nabi_conv)) Hashtbl.t;
465463
crate_required_syms: (node_id, string) Hashtbl.t;

trunk/src/boot/fe/item.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -758,7 +758,7 @@ and parse_meta_pat (ps:pstate) : Ast.meta_pat =
758758
bracketed_zero_or_more LPAREN RPAREN
759759
(Some COMMA) parse_meta_input ps
760760

761-
and parse_meta (ps:pstate) : Ast.meta =
761+
and parse_meta (ps:pstate) : Session.meta =
762762
Array.map
763763
begin
764764
fun (id,v) ->

trunk/src/boot/util/common.ml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@ type node_id = Node of int
1313
type temp_id = Temp of int
1414
type opaque_id = Opaque of int
1515
type constr_id = Constr of int
16+
type crate_id = Crate of int
1617

1718
let int_of_node (Node i) = i
1819
let int_of_temp (Temp i) = i
1920
let int_of_opaque (Opaque i) = i
2021
let int_of_constr (Constr i) = i
22+
let int_of_common (Crate i) = i
2123

2224
type 'a identified = { node: 'a; id: node_id }
2325
;;

0 commit comments

Comments
 (0)