aboutsummaryrefslogtreecommitdiff
path: root/src/boot/fe
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2010-09-20 13:06:49 -0700
committerGraydon Hoare <[email protected]>2010-09-20 13:06:49 -0700
commit7ab3b305e4f2b8f7d1e24c45756cfe23b0859ddc (patch)
tree4897e598c2a06a76bfd0c2e709e6828126b29d29 /src/boot/fe
parentBeginnings of post-resolve simplify pass. (diff)
downloadrust-7ab3b305e4f2b8f7d1e24c45756cfe23b0859ddc.tar.xz
rust-7ab3b305e4f2b8f7d1e24c45756cfe23b0859ddc.zip
Move id counters into sess in preparation for moving desugaring to middle-end.
Diffstat (limited to 'src/boot/fe')
-rw-r--r--src/boot/fe/cexp.ml20
-rw-r--r--src/boot/fe/item.ml9
-rw-r--r--src/boot/fe/parser.ml38
3 files changed, 19 insertions, 48 deletions
diff --git a/src/boot/fe/cexp.ml b/src/boot/fe/cexp.ml
index d856b131..ac05105e 100644
--- a/src/boot/fe/cexp.ml
+++ b/src/boot/fe/cexp.ml
@@ -381,9 +381,6 @@ and eval_cexp (env:env) (exp:cexp) : cdir array =
let ps = env.env_ps in
let p =
make_parser
- ps.pstate_temp_id
- ps.pstate_node_id
- ps.pstate_opaque_id
ps.pstate_crate_cache
ps.pstate_sess
ps.pstate_get_mod
@@ -432,12 +429,7 @@ and eval_cexp (env:env) (exp:cexp) : cdir array =
end
u.use_meta
in
- ps.pstate_get_mod
- meta_pat
- id
- ps.pstate_node_id
- ps.pstate_opaque_id
- ps.pstate_crate_cache
+ ps.pstate_get_mod meta_pat id ps.pstate_crate_cache
in
iflog ps
begin
@@ -631,9 +623,6 @@ let parse_crate_file
(crate_cache:(crate_id, Ast.mod_items) Hashtbl.t)
: Ast.crate =
let fname = Session.filename_of sess.Session.sess_in in
- let tref = ref (Temp 0) in
- let nref = ref (Node 0) in
- let oref = ref (Opaque 0) in
let required = Hashtbl.create 4 in
let required_syms = Hashtbl.create 4 in
let files = Hashtbl.create 0 in
@@ -670,7 +659,7 @@ let parse_crate_file
| Some (PVAL_num n) -> LIT_INT n
in
let ps =
- make_parser tref nref oref crate_cache sess get_mod get_cenv_tok
+ make_parser crate_cache sess get_mod get_cenv_tok
infer_lib_name required required_syms fname
in
let env = { env_bindings = bindings;
@@ -737,9 +726,6 @@ let parse_src_file
(crate_cache:(crate_id, Ast.mod_items) Hashtbl.t)
: Ast.crate =
let fname = Session.filename_of sess.Session.sess_in in
- let tref = ref (Temp 0) in
- let nref = ref (Node 0) in
- let oref = ref (Opaque 0) in
let required = Hashtbl.create 0 in
let required_syms = Hashtbl.create 0 in
let get_cenv_tok ps ident =
@@ -747,7 +733,7 @@ let parse_src_file
ident) ps)
in
let ps =
- make_parser tref nref oref crate_cache sess get_mod get_cenv_tok
+ make_parser crate_cache sess get_mod get_cenv_tok
infer_lib_name required required_syms fname
in
with_err_handling sess
diff --git a/src/boot/fe/item.ml b/src/boot/fe/item.ml
index 00eb8387..c747713b 100644
--- a/src/boot/fe/item.ml
+++ b/src/boot/fe/item.ml
@@ -1202,14 +1202,7 @@ and parse_use
let apos = lexpos ps in
let bpos = lexpos ps in
let id = (span ps apos bpos ()).id in
- let (path, items) =
- ps.pstate_get_mod
- meta
- id
- ps.pstate_node_id
- ps.pstate_opaque_id
- ps.pstate_crate_cache
- in
+ let (path, items) = ps.pstate_get_mod meta id ps.pstate_crate_cache in
let bpos = lexpos ps in
expect ps SEMI;
let rlib =
diff --git a/src/boot/fe/parser.ml b/src/boot/fe/parser.ml
index 883ee01d..3cf464ca 100644
--- a/src/boot/fe/parser.ml
+++ b/src/boot/fe/parser.ml
@@ -6,10 +6,8 @@ open Token;;
type get_mod_fn = (Ast.meta_pat
-> node_id
- -> (node_id ref)
- -> (opaque_id ref)
- -> (crate_id, Ast.mod_items) Hashtbl.t
- -> (filename * Ast.mod_items))
+ -> (crate_id, Ast.mod_items) Hashtbl.t
+ -> (filename * Ast.mod_items))
;;
type pstate =
@@ -20,9 +18,6 @@ type pstate =
pstate_lexbuf : Lexing.lexbuf;
pstate_file : filename;
pstate_sess : Session.sess;
- pstate_temp_id : temp_id ref;
- pstate_node_id : node_id ref;
- pstate_opaque_id : opaque_id ref;
pstate_crate_cache : (crate_id, Ast.mod_items) Hashtbl.t;
pstate_get_mod : get_mod_fn;
pstate_get_cenv_tok : pstate -> Ast.ident -> token;
@@ -43,9 +38,6 @@ let iflog ps thunk =
;;
let make_parser
- (tref:temp_id ref)
- (nref:node_id ref)
- (oref:opaque_id ref)
(crate_cache:(crate_id, Ast.mod_items) Hashtbl.t)
(sess:Session.sess)
(get_mod:get_mod_fn)
@@ -69,9 +61,6 @@ let make_parser
pstate_lexbuf = lexbuf;
pstate_file = fname;
pstate_sess = sess;
- pstate_temp_id = tref;
- pstate_node_id = nref;
- pstate_opaque_id = oref;
pstate_crate_cache = crate_cache;
pstate_get_mod = get_mod;
pstate_get_cenv_tok = get_cenv_tok;
@@ -94,14 +83,16 @@ let lexpos (ps:pstate) : pos =
;;
let next_node_id (ps:pstate) : node_id =
- let id = !(ps.pstate_node_id) in
- ps.pstate_node_id := Node ((int_of_node id)+1);
+ let r = ps.pstate_sess.Session.sess_node_id_counter in
+ let id = !r in
+ r := Node ((int_of_node id)+1);
id
;;
let next_opaque_id (ps:pstate) : opaque_id =
- let id = !(ps.pstate_opaque_id) in
- ps.pstate_opaque_id := Opaque ((int_of_opaque id)+1);
+ let r = ps.pstate_sess.Session.sess_opaque_id_counter in
+ let id = !r in
+ r := Opaque ((int_of_opaque id)+1);
id
;;
@@ -203,14 +194,15 @@ let build_tmp
(apos:pos)
(bpos:pos)
: (temp_id * Ast.lval * Ast.stmt) =
- let nonce = !(ps.pstate_temp_id) in
- ps.pstate_temp_id := Temp ((int_of_temp nonce)+1);
+ let r = ps.pstate_sess.Session.sess_temp_id_counter in
+ let id = !r in
+ r := Temp ((int_of_temp id)+1);
iflog ps
- (fun _ -> log ps "building temporary %d" (int_of_temp nonce));
- let decl = Ast.DECL_slot (Ast.KEY_temp nonce, (span ps apos bpos slot)) in
+ (fun _ -> log ps "building temporary %d" (int_of_temp id));
+ let decl = Ast.DECL_slot (Ast.KEY_temp id, (span ps apos bpos slot)) in
let declstmt = span ps apos bpos (Ast.STMT_decl decl) in
- let tmp = Ast.LVAL_base (span ps apos bpos (Ast.BASE_temp nonce)) in
- (nonce, tmp, declstmt)
+ let tmp = Ast.LVAL_base (span ps apos bpos (Ast.BASE_temp id)) in
+ (id, tmp, declstmt)
;;
(* Simple helpers *)