File tree Expand file tree Collapse file tree 6 files changed +22
-6
lines changed Expand file tree Collapse file tree 6 files changed +22
-6
lines changed Original file line number Diff line number Diff line change @@ -59,7 +59,7 @@ let get_sects
59
59
let get_meta
60
60
(sess :Session.sess )
61
61
(filename :filename )
62
- : Ast .meta option =
62
+ : Session .meta option =
63
63
htab_search_or_add meta_cache filename
64
64
begin
65
65
fun _ ->
@@ -190,6 +190,10 @@ let get_mod
190
190
match get_meta sess file with
191
191
None -> ()
192
192
| 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);
193
197
Array. iter
194
198
(fun (k ,v ) -> log sess " %s = %S" k v)
195
199
meta;
Original file line number Diff line number Diff line change @@ -58,8 +58,10 @@ let (sess:Session.sess) =
58
58
Session. sess_report_timing = false ;
59
59
Session. sess_report_gc = false ;
60
60
Session. sess_report_deps = false ;
61
+ Session. sess_next_crate_id = 0 ;
61
62
Session. sess_timings = Hashtbl. create 0 ;
62
63
Session. sess_lib_dirs = Queue. create () ;
64
+ Session. sess_crate_meta = Hashtbl. create 0 ;
63
65
}
64
66
;;
65
67
Original file line number Diff line number Diff line change 5
5
6
6
open Common ;;
7
7
8
+ type meta = (string * string ) array ;;
9
+
8
10
type sess =
9
11
{
10
12
mutable sess_in : filename option ;
@@ -41,9 +43,11 @@ type sess =
41
43
mutable sess_report_timing : bool ;
42
44
mutable sess_report_gc : bool ;
43
45
mutable sess_report_deps : bool ;
46
+ mutable sess_next_crate_id : int ;
44
47
sess_timings : (string , float ) Hashtbl .t ;
45
48
sess_spans : (node_id ,span) Hashtbl .t ;
46
49
sess_lib_dirs : filename Queue .t ;
50
+ sess_crate_meta : (meta , crate_id ) Hashtbl .t ;
47
51
}
48
52
;;
49
53
@@ -115,6 +119,12 @@ let report_err sess ido str =
115
119
(string_of_span span) str
116
120
;;
117
121
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
+
118
128
(*
119
129
* Local Variables:
120
130
* fill-column: 78;
Original file line number Diff line number Diff line change @@ -452,14 +452,12 @@ and mod_view =
452
452
view_exports : (export , unit ) Hashtbl .t ;
453
453
}
454
454
455
- and meta = (ident * string ) array
456
-
457
- and meta_pat = (ident * string option ) array
455
+ and meta_pat = (string * string option ) array
458
456
459
457
and crate' =
460
458
{
461
459
crate_items : (mod_view * mod_items );
462
- crate_meta : meta ;
460
+ crate_meta : Session . meta;
463
461
crate_auth : (name , effect ) Hashtbl .t ;
464
462
crate_required : (node_id , (required_lib * nabi_conv )) Hashtbl .t ;
465
463
crate_required_syms : (node_id , string ) Hashtbl .t ;
Original file line number Diff line number Diff line change @@ -758,7 +758,7 @@ and parse_meta_pat (ps:pstate) : Ast.meta_pat =
758
758
bracketed_zero_or_more LPAREN RPAREN
759
759
(Some COMMA ) parse_meta_input ps
760
760
761
- and parse_meta (ps :pstate ) : Ast .meta =
761
+ and parse_meta (ps :pstate ) : Session .meta =
762
762
Array. map
763
763
begin
764
764
fun (id ,v ) ->
Original file line number Diff line number Diff line change @@ -13,11 +13,13 @@ type node_id = Node of int
13
13
type temp_id = Temp of int
14
14
type opaque_id = Opaque of int
15
15
type constr_id = Constr of int
16
+ type crate_id = Crate of int
16
17
17
18
let int_of_node (Node i ) = i
18
19
let int_of_temp (Temp i ) = i
19
20
let int_of_opaque (Opaque i ) = i
20
21
let int_of_constr (Constr i ) = i
22
+ let int_of_common (Crate i ) = i
21
23
22
24
type 'a identified = { node : 'a ; id : node_id }
23
25
;;
You can’t perform that action at this time.
0 commit comments