aboutsummaryrefslogtreecommitdiff
path: root/src/boot/fe
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2011-04-19 13:35:49 -0700
committerGraydon Hoare <[email protected]>2011-04-19 13:35:49 -0700
commitd2bd07dcb02783063375b6c8532fceaf9fa9d50f (patch)
treea253b5eadb140d14bc99d1456e316ce1e210a6be /src/boot/fe
parentrustc: Allow glue to be emitted even for scalar types; this is necessary to s... (diff)
downloadrust-d2bd07dcb02783063375b6c8532fceaf9fa9d50f.tar.xz
rust-d2bd07dcb02783063375b6c8532fceaf9fa9d50f.zip
Remove effect system from src.
Diffstat (limited to 'src/boot/fe')
-rw-r--r--src/boot/fe/ast.ml27
-rw-r--r--src/boot/fe/cexp.ml6
-rw-r--r--src/boot/fe/item.ml27
-rw-r--r--src/boot/fe/lexer.mll1
-rw-r--r--src/boot/fe/pexp.ml21
-rw-r--r--src/boot/fe/token.ml6
6 files changed, 21 insertions, 67 deletions
diff --git a/src/boot/fe/ast.ml b/src/boot/fe/ast.ml
index f498fb0e..c2387c5a 100644
--- a/src/boot/fe/ast.ml
+++ b/src/boot/fe/ast.ml
@@ -28,10 +28,7 @@ type slot_key =
write foo[int,int].bar but not foo.bar.
*)
-type effect =
- EFF_pure
- | EFF_impure
- | EFF_unsafe
+type auth = AUTH_unsafe
;;
type layer =
@@ -174,7 +171,6 @@ and ty_sig =
and ty_fn_aux =
{
fn_is_iter: bool;
- fn_effect: effect;
}
and ty_fn = (ty_sig * ty_fn_aux)
@@ -485,7 +481,7 @@ and crate' =
{
crate_items: (mod_view * mod_items);
crate_meta: Session.meta;
- crate_auth: (name, effect) Hashtbl.t;
+ crate_auth: (name, auth) Hashtbl.t;
crate_required: (node_id, (required_lib * nabi_conv)) Hashtbl.t;
crate_required_syms: (node_id, string) Hashtbl.t;
crate_files: (node_id,filename) Hashtbl.t;
@@ -708,22 +704,6 @@ and fmt_slots
done;
fmt ff "@])"
-and fmt_effect
- (ff:Format.formatter)
- (effect:effect)
- : unit =
- match effect with
- EFF_pure -> ()
- | EFF_impure -> fmt ff "impure"
- | EFF_unsafe -> fmt ff "unsafe"
-
-and fmt_effect_qual
- (ff:Format.formatter)
- (e:effect)
- : unit =
- fmt_effect ff e;
- if e <> EFF_pure then fmt ff " ";
-
and fmt_layer
(ff:Format.formatter)
(la:layer)
@@ -762,7 +742,6 @@ and fmt_ty_fn
(tf:ty_fn)
: unit =
let (tsig, ta) = tf in
- fmt_effect_qual ff ta.fn_effect;
fmt ff "%s" (if ta.fn_is_iter then "iter" else "fn");
begin
match ident_and_params with
@@ -1667,7 +1646,6 @@ and fmt_fn
(f:fn)
: unit =
fmt_obox ff;
- fmt_effect_qual ff f.fn_aux.fn_effect;
fmt ff "%s "(if f.fn_aux.fn_is_iter then "iter" else "fn");
fmt_ident_and_params ff id params;
fmt_header_slots ff f.fn_input_slots;
@@ -1816,7 +1794,6 @@ let sprintf_atom = sprintf_fmt fmt_atom;;
let sprintf_slot = sprintf_fmt fmt_slot;;
let sprintf_slot_key = sprintf_fmt fmt_slot_key;;
let sprintf_ty = sprintf_fmt fmt_ty;;
-let sprintf_effect = sprintf_fmt fmt_effect;;
let sprintf_carg = sprintf_fmt fmt_carg;;
let sprintf_constr = sprintf_fmt fmt_constr;;
let sprintf_mod_item =
diff --git a/src/boot/fe/cexp.ml b/src/boot/fe/cexp.ml
index a0db6773..fba2e798 100644
--- a/src/boot/fe/cexp.ml
+++ b/src/boot/fe/cexp.ml
@@ -29,7 +29,7 @@ type meta = (Ast.ident * Ast.pexp) array;;
type meta_pat = (Ast.ident * (Ast.pexp option)) array;;
-type auth = (Ast.name * Ast.effect);;
+type auth = (Ast.name * Ast.auth);;
type cexp =
CEXP_alt of cexp_alt identified
@@ -274,10 +274,10 @@ and parse_cexp (ps:pstate) : cexp =
bump ps;
let name = Pexp.parse_name ps in
expect ps EQ;
- let effect = Pexp.parse_effect ps in
+ let au = Pexp.parse_auth ps in
expect ps SEMI;
let bpos = lexpos ps in
- CEXP_auth (span ps apos bpos (name, effect))
+ CEXP_auth (span ps apos bpos (name, au))
| _ -> raise (unexpected ps)
diff --git a/src/boot/fe/item.ml b/src/boot/fe/item.ml
index 5f8a0d30..df300b19 100644
--- a/src/boot/fe/item.ml
+++ b/src/boot/fe/item.ml
@@ -610,7 +610,6 @@ and parse_stmts_including_none (ps:pstate) : Ast.stmt array =
| STATE | GC
- | IMPURE | UNSAFE
| ABS | NATIVE
| MOD | OBJ | TAG | TYPE | FN | USE ->
let items = ctxt "stmt: decl" parse_mod_item ps in
@@ -794,7 +793,6 @@ and parse_in_and_out
(* parse_fn starts at the first lparen of the sig. *)
and parse_fn
(is_iter:bool)
- (effect:Ast.effect)
(ps:pstate)
: Ast.fn =
let (inputs, constrs, output) =
@@ -804,8 +802,7 @@ and parse_fn
{ Ast.fn_input_slots = inputs;
Ast.fn_input_constrs = constrs;
Ast.fn_output_slot = output;
- Ast.fn_aux = { Ast.fn_effect = effect;
- Ast.fn_is_iter = is_iter; };
+ Ast.fn_aux = { Ast.fn_is_iter = is_iter; };
Ast.fn_body = body; }
and parse_meta_input (ps:pstate) : (Ast.ident * string option) =
@@ -859,12 +856,11 @@ and parse_obj_item
do
let apos = lexpos ps in
match peek ps with
- IMPURE | UNSAFE | FN | ITER ->
- let effect = Pexp.parse_effect ps in
+ FN | ITER ->
let is_iter = (peek ps) = ITER in
bump ps;
let ident = ctxt "obj fn: ident" Pexp.parse_ident ps in
- let fn = ctxt "obj fn: fn" (parse_fn is_iter effect) ps in
+ let fn = ctxt "obj fn: fn" (parse_fn is_iter) ps in
let bpos = lexpos ps in
htab_put fns ident (span ps apos bpos fn)
| DROP ->
@@ -994,24 +990,17 @@ and parse_mod_item (ps:pstate)
match peek ps with
- STATE | GC | IMPURE | UNSAFE | ABS
+ STATE | GC | ABS
| TYPE | OBJ | TAG | FN | ITER ->
let _ = Pexp.parse_opacity ps in
let layer = Pexp.parse_layer ps in
- let effect = Pexp.parse_effect ps in
begin
match peek ps with
OBJ ->
- if effect <> Ast.EFF_pure
- then raise (err "effect specified for obj" ps);
[| parse_obj_item ps apos layer |]
| TAG ->
- if effect <> Ast.EFF_pure
- then raise (err "effect specified for tag" ps);
parse_tag_item ps apos layer
| TYPE ->
- if effect <> Ast.EFF_pure
- then raise (err "effect specified for type" ps);
[| parse_type_item ps apos layer |]
| _ ->
if layer <> Ast.LAYER_value
@@ -1020,7 +1009,7 @@ and parse_mod_item (ps:pstate)
bump ps;
let (ident, params) = parse_ident_and_params ps "fn" in
let fn =
- ctxt "mod fn item: fn" (parse_fn is_iter effect) ps
+ ctxt "mod fn item: fn" (parse_fn is_iter) ps
in
let bpos = lexpos ps in
[| (ident,
@@ -1119,8 +1108,7 @@ and parse_native_mod_item_from_signature (ps:pstate)
[| (ident,
span ps apos bpos (decl params (Ast.MOD_ITEM_mod items))) |]
- | IMPURE | UNSAFE | FN | ITER ->
- let effect = Pexp.parse_effect ps in
+ | FN | ITER ->
let is_iter = (peek ps) = ITER in
bump ps;
let (ident, params) = parse_ident_and_params ps "fn signature" in
@@ -1132,8 +1120,7 @@ and parse_native_mod_item_from_signature (ps:pstate)
{ Ast.fn_input_slots = inputs;
Ast.fn_input_constrs = constrs;
Ast.fn_output_slot = output;
- Ast.fn_aux = { Ast.fn_effect = effect;
- Ast.fn_is_iter = is_iter; };
+ Ast.fn_aux = { Ast.fn_is_iter = is_iter; };
Ast.fn_body = body; }
in
let node = span ps apos bpos (decl params fn) in
diff --git a/src/boot/fe/lexer.mll b/src/boot/fe/lexer.mll
index 513818b3..5cf73166 100644
--- a/src/boot/fe/lexer.mll
+++ b/src/boot/fe/lexer.mll
@@ -100,7 +100,6 @@
("state", STATE);
("gc", GC);
- ("impure", IMPURE);
("unsafe", UNSAFE);
("native", NATIVE);
diff --git a/src/boot/fe/pexp.ml b/src/boot/fe/pexp.ml
index 06252966..5310f6df 100644
--- a/src/boot/fe/pexp.ml
+++ b/src/boot/fe/pexp.ml
@@ -151,11 +151,10 @@ and parse_layer (ps:pstate) : Ast.layer =
| GC -> bump ps; Ast.LAYER_gc
| _ -> Ast.LAYER_value
-and parse_effect (ps:pstate) : Ast.effect =
+and parse_auth (ps:pstate) : Ast.auth =
match peek ps with
- IMPURE -> bump ps; Ast.EFF_impure
- | UNSAFE -> bump ps; Ast.EFF_unsafe
- | _ -> Ast.EFF_pure
+ | UNSAFE -> bump ps; Ast.AUTH_unsafe
+ | _ -> raise (unexpected ps)
and parse_mutability (ps:pstate) : Ast.mutability =
match peek ps with
@@ -170,7 +169,6 @@ and parse_mutability (ps:pstate) : Ast.mutability =
| _ -> Ast.MUT_immutable
and parse_ty_fn
- (effect:Ast.effect)
(ps:pstate)
: (Ast.ty_fn * Ast.ident option) =
match peek ps with
@@ -198,8 +196,7 @@ and parse_ty_fn
Ast.sig_input_constrs = constrs;
Ast.sig_output_slot = out_slot; }
in
- let taux = { Ast.fn_effect = effect;
- Ast.fn_is_iter = is_iter; }
+ let taux = { Ast.fn_is_iter = is_iter; }
in
let tfn = (tsig, taux) in
(tfn, ident)
@@ -280,19 +277,15 @@ and parse_atomic_ty (ps:pstate) : Ast.ty =
bump ps;
Ast.TY_mach m
- | STATE | GC | IMPURE | UNSAFE | OBJ | FN | ITER ->
+ | STATE | GC | UNSAFE | OBJ | FN | ITER ->
let layer = parse_layer ps in
- let effect = parse_effect ps in
begin
match peek ps with
OBJ ->
bump ps;
- if effect <> Ast.EFF_pure
- then raise (err "effect specified for obj" ps);
let methods = Hashtbl.create 0 in
let parse_method ps =
- let effect = parse_effect ps in
- let (tfn, ident) = parse_ty_fn effect ps in
+ let (tfn, ident) = parse_ty_fn ps in
expect ps SEMI;
match ident with
None ->
@@ -307,7 +300,7 @@ and parse_atomic_ty (ps:pstate) : Ast.ty =
| FN | ITER ->
if layer <> Ast.LAYER_value
then raise (err "layer specified for fn or iter" ps);
- Ast.TY_fn (fst (parse_ty_fn effect ps))
+ Ast.TY_fn (fst (parse_ty_fn ps))
| _ -> raise (unexpected ps)
end
diff --git a/src/boot/fe/token.ml b/src/boot/fe/token.ml
index 7b4f04b2..7f4665c2 100644
--- a/src/boot/fe/token.ml
+++ b/src/boot/fe/token.ml
@@ -87,8 +87,7 @@ type token =
| STATE
| GC
- (* Effect keywords *)
- | IMPURE
+ (* Unsafe-block keyword *)
| UNSAFE
(* Type qualifiers *)
@@ -251,8 +250,7 @@ let rec string_of_tok t =
| STATE -> "state"
| GC -> "gc"
- (* Effect keywords *)
- | IMPURE -> "impure"
+ (* Unsafe-block keyword *)
| UNSAFE -> "unsafe"
(* Type qualifiers *)