Skip to content

Commit d2bd07d

Browse files
committed
Remove effect system from src.
1 parent d9d5eb8 commit d2bd07d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+509
-1039
lines changed

Makefile.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ BOOT_MLS := \
264264
extfmt pexp item cexp fuzz) \
265265
$(addprefix boot/be/, asm il abi) \
266266
$(addprefix boot/me/, walk semant resolve alias \
267-
simplify type dead layer effect typestate \
267+
simplify type dead layer typestate \
268268
loop layout transutil trans dwarf) \
269269
$(addprefix boot/be/, x86 ra pe elf macho) \
270270
$(addprefix boot/driver/, lib glue main)) \

src/boot/driver/main.ml

-4
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ let (sess:Session.sess) =
4343
Session.sess_log_type = false;
4444
Session.sess_log_simplify = false;
4545
Session.sess_log_layer = false;
46-
Session.sess_log_effect = false;
4746
Session.sess_log_typestate = false;
4847
Session.sess_log_loop = false;
4948
Session.sess_log_alias = false;
@@ -192,8 +191,6 @@ let argspecs =
192191
"-lsimplify" "log simplification");
193192
(flag (fun _ -> sess.Session.sess_log_layer <- true)
194193
"-llayer" "log layer checking");
195-
(flag (fun _ -> sess.Session.sess_log_effect <- true)
196-
"-leffect" "log effect checking");
197194
(flag (fun _ -> sess.Session.sess_log_typestate <- true)
198195
"-ltypestate" "log typestate pass");
199196
(flag (fun _ -> sess.Session.sess_log_loop <- true)
@@ -408,7 +405,6 @@ let main_pipeline _ =
408405
Type.process_crate;
409406
Typestate.process_crate;
410407
Layer.process_crate;
411-
Effect.process_crate;
412408
Loop.process_crate;
413409
Alias.process_crate;
414410
Dead.process_crate;

src/boot/driver/session.ml

-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ type sess =
2525
mutable sess_log_type: bool;
2626
mutable sess_log_simplify: bool;
2727
mutable sess_log_layer: bool;
28-
mutable sess_log_effect: bool;
2928
mutable sess_log_typestate: bool;
3029
mutable sess_log_dead: bool;
3130
mutable sess_log_loop: bool;

src/boot/fe/ast.ml

+2-25
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@ type slot_key =
2828
write foo[int,int].bar but not foo.bar.
2929
*)
3030

31-
type effect =
32-
EFF_pure
33-
| EFF_impure
34-
| EFF_unsafe
31+
type auth = AUTH_unsafe
3532
;;
3633

3734
type layer =
@@ -174,7 +171,6 @@ and ty_sig =
174171
and ty_fn_aux =
175172
{
176173
fn_is_iter: bool;
177-
fn_effect: effect;
178174
}
179175

180176
and ty_fn = (ty_sig * ty_fn_aux)
@@ -485,7 +481,7 @@ and crate' =
485481
{
486482
crate_items: (mod_view * mod_items);
487483
crate_meta: Session.meta;
488-
crate_auth: (name, effect) Hashtbl.t;
484+
crate_auth: (name, auth) Hashtbl.t;
489485
crate_required: (node_id, (required_lib * nabi_conv)) Hashtbl.t;
490486
crate_required_syms: (node_id, string) Hashtbl.t;
491487
crate_files: (node_id,filename) Hashtbl.t;
@@ -708,22 +704,6 @@ and fmt_slots
708704
done;
709705
fmt ff "@])"
710706

711-
and fmt_effect
712-
(ff:Format.formatter)
713-
(effect:effect)
714-
: unit =
715-
match effect with
716-
EFF_pure -> ()
717-
| EFF_impure -> fmt ff "impure"
718-
| EFF_unsafe -> fmt ff "unsafe"
719-
720-
and fmt_effect_qual
721-
(ff:Format.formatter)
722-
(e:effect)
723-
: unit =
724-
fmt_effect ff e;
725-
if e <> EFF_pure then fmt ff " ";
726-
727707
and fmt_layer
728708
(ff:Format.formatter)
729709
(la:layer)
@@ -762,7 +742,6 @@ and fmt_ty_fn
762742
(tf:ty_fn)
763743
: unit =
764744
let (tsig, ta) = tf in
765-
fmt_effect_qual ff ta.fn_effect;
766745
fmt ff "%s" (if ta.fn_is_iter then "iter" else "fn");
767746
begin
768747
match ident_and_params with
@@ -1667,7 +1646,6 @@ and fmt_fn
16671646
(f:fn)
16681647
: unit =
16691648
fmt_obox ff;
1670-
fmt_effect_qual ff f.fn_aux.fn_effect;
16711649
fmt ff "%s "(if f.fn_aux.fn_is_iter then "iter" else "fn");
16721650
fmt_ident_and_params ff id params;
16731651
fmt_header_slots ff f.fn_input_slots;
@@ -1816,7 +1794,6 @@ let sprintf_atom = sprintf_fmt fmt_atom;;
18161794
let sprintf_slot = sprintf_fmt fmt_slot;;
18171795
let sprintf_slot_key = sprintf_fmt fmt_slot_key;;
18181796
let sprintf_ty = sprintf_fmt fmt_ty;;
1819-
let sprintf_effect = sprintf_fmt fmt_effect;;
18201797
let sprintf_carg = sprintf_fmt fmt_carg;;
18211798
let sprintf_constr = sprintf_fmt fmt_constr;;
18221799
let sprintf_mod_item =

src/boot/fe/cexp.ml

+3-3
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ type meta = (Ast.ident * Ast.pexp) array;;
2929

3030
type meta_pat = (Ast.ident * (Ast.pexp option)) array;;
3131

32-
type auth = (Ast.name * Ast.effect);;
32+
type auth = (Ast.name * Ast.auth);;
3333

3434
type cexp =
3535
CEXP_alt of cexp_alt identified
@@ -274,10 +274,10 @@ and parse_cexp (ps:pstate) : cexp =
274274
bump ps;
275275
let name = Pexp.parse_name ps in
276276
expect ps EQ;
277-
let effect = Pexp.parse_effect ps in
277+
let au = Pexp.parse_auth ps in
278278
expect ps SEMI;
279279
let bpos = lexpos ps in
280-
CEXP_auth (span ps apos bpos (name, effect))
280+
CEXP_auth (span ps apos bpos (name, au))
281281

282282
| _ -> raise (unexpected ps)
283283

src/boot/fe/item.ml

+7-20
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,6 @@ and parse_stmts_including_none (ps:pstate) : Ast.stmt array =
610610

611611

612612
| STATE | GC
613-
| IMPURE | UNSAFE
614613
| ABS | NATIVE
615614
| MOD | OBJ | TAG | TYPE | FN | USE ->
616615
let items = ctxt "stmt: decl" parse_mod_item ps in
@@ -794,7 +793,6 @@ and parse_in_and_out
794793
(* parse_fn starts at the first lparen of the sig. *)
795794
and parse_fn
796795
(is_iter:bool)
797-
(effect:Ast.effect)
798796
(ps:pstate)
799797
: Ast.fn =
800798
let (inputs, constrs, output) =
@@ -804,8 +802,7 @@ and parse_fn
804802
{ Ast.fn_input_slots = inputs;
805803
Ast.fn_input_constrs = constrs;
806804
Ast.fn_output_slot = output;
807-
Ast.fn_aux = { Ast.fn_effect = effect;
808-
Ast.fn_is_iter = is_iter; };
805+
Ast.fn_aux = { Ast.fn_is_iter = is_iter; };
809806
Ast.fn_body = body; }
810807

811808
and parse_meta_input (ps:pstate) : (Ast.ident * string option) =
@@ -859,12 +856,11 @@ and parse_obj_item
859856
do
860857
let apos = lexpos ps in
861858
match peek ps with
862-
IMPURE | UNSAFE | FN | ITER ->
863-
let effect = Pexp.parse_effect ps in
859+
FN | ITER ->
864860
let is_iter = (peek ps) = ITER in
865861
bump ps;
866862
let ident = ctxt "obj fn: ident" Pexp.parse_ident ps in
867-
let fn = ctxt "obj fn: fn" (parse_fn is_iter effect) ps in
863+
let fn = ctxt "obj fn: fn" (parse_fn is_iter) ps in
868864
let bpos = lexpos ps in
869865
htab_put fns ident (span ps apos bpos fn)
870866
| DROP ->
@@ -994,24 +990,17 @@ and parse_mod_item (ps:pstate)
994990

995991
match peek ps with
996992

997-
STATE | GC | IMPURE | UNSAFE | ABS
993+
STATE | GC | ABS
998994
| TYPE | OBJ | TAG | FN | ITER ->
999995
let _ = Pexp.parse_opacity ps in
1000996
let layer = Pexp.parse_layer ps in
1001-
let effect = Pexp.parse_effect ps in
1002997
begin
1003998
match peek ps with
1004999
OBJ ->
1005-
if effect <> Ast.EFF_pure
1006-
then raise (err "effect specified for obj" ps);
10071000
[| parse_obj_item ps apos layer |]
10081001
| TAG ->
1009-
if effect <> Ast.EFF_pure
1010-
then raise (err "effect specified for tag" ps);
10111002
parse_tag_item ps apos layer
10121003
| TYPE ->
1013-
if effect <> Ast.EFF_pure
1014-
then raise (err "effect specified for type" ps);
10151004
[| parse_type_item ps apos layer |]
10161005
| _ ->
10171006
if layer <> Ast.LAYER_value
@@ -1020,7 +1009,7 @@ and parse_mod_item (ps:pstate)
10201009
bump ps;
10211010
let (ident, params) = parse_ident_and_params ps "fn" in
10221011
let fn =
1023-
ctxt "mod fn item: fn" (parse_fn is_iter effect) ps
1012+
ctxt "mod fn item: fn" (parse_fn is_iter) ps
10241013
in
10251014
let bpos = lexpos ps in
10261015
[| (ident,
@@ -1119,8 +1108,7 @@ and parse_native_mod_item_from_signature (ps:pstate)
11191108
[| (ident,
11201109
span ps apos bpos (decl params (Ast.MOD_ITEM_mod items))) |]
11211110

1122-
| IMPURE | UNSAFE | FN | ITER ->
1123-
let effect = Pexp.parse_effect ps in
1111+
| FN | ITER ->
11241112
let is_iter = (peek ps) = ITER in
11251113
bump ps;
11261114
let (ident, params) = parse_ident_and_params ps "fn signature" in
@@ -1132,8 +1120,7 @@ and parse_native_mod_item_from_signature (ps:pstate)
11321120
{ Ast.fn_input_slots = inputs;
11331121
Ast.fn_input_constrs = constrs;
11341122
Ast.fn_output_slot = output;
1135-
Ast.fn_aux = { Ast.fn_effect = effect;
1136-
Ast.fn_is_iter = is_iter; };
1123+
Ast.fn_aux = { Ast.fn_is_iter = is_iter; };
11371124
Ast.fn_body = body; }
11381125
in
11391126
let node = span ps apos bpos (decl params fn) in

src/boot/fe/lexer.mll

-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@
100100
("state", STATE);
101101
("gc", GC);
102102

103-
("impure", IMPURE);
104103
("unsafe", UNSAFE);
105104

106105
("native", NATIVE);

src/boot/fe/pexp.ml

+7-14
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,10 @@ and parse_layer (ps:pstate) : Ast.layer =
151151
| GC -> bump ps; Ast.LAYER_gc
152152
| _ -> Ast.LAYER_value
153153

154-
and parse_effect (ps:pstate) : Ast.effect =
154+
and parse_auth (ps:pstate) : Ast.auth =
155155
match peek ps with
156-
IMPURE -> bump ps; Ast.EFF_impure
157-
| UNSAFE -> bump ps; Ast.EFF_unsafe
158-
| _ -> Ast.EFF_pure
156+
| UNSAFE -> bump ps; Ast.AUTH_unsafe
157+
| _ -> raise (unexpected ps)
159158

160159
and parse_mutability (ps:pstate) : Ast.mutability =
161160
match peek ps with
@@ -170,7 +169,6 @@ and parse_mutability (ps:pstate) : Ast.mutability =
170169
| _ -> Ast.MUT_immutable
171170

172171
and parse_ty_fn
173-
(effect:Ast.effect)
174172
(ps:pstate)
175173
: (Ast.ty_fn * Ast.ident option) =
176174
match peek ps with
@@ -198,8 +196,7 @@ and parse_ty_fn
198196
Ast.sig_input_constrs = constrs;
199197
Ast.sig_output_slot = out_slot; }
200198
in
201-
let taux = { Ast.fn_effect = effect;
202-
Ast.fn_is_iter = is_iter; }
199+
let taux = { Ast.fn_is_iter = is_iter; }
203200
in
204201
let tfn = (tsig, taux) in
205202
(tfn, ident)
@@ -280,19 +277,15 @@ and parse_atomic_ty (ps:pstate) : Ast.ty =
280277
bump ps;
281278
Ast.TY_mach m
282279

283-
| STATE | GC | IMPURE | UNSAFE | OBJ | FN | ITER ->
280+
| STATE | GC | UNSAFE | OBJ | FN | ITER ->
284281
let layer = parse_layer ps in
285-
let effect = parse_effect ps in
286282
begin
287283
match peek ps with
288284
OBJ ->
289285
bump ps;
290-
if effect <> Ast.EFF_pure
291-
then raise (err "effect specified for obj" ps);
292286
let methods = Hashtbl.create 0 in
293287
let parse_method ps =
294-
let effect = parse_effect ps in
295-
let (tfn, ident) = parse_ty_fn effect ps in
288+
let (tfn, ident) = parse_ty_fn ps in
296289
expect ps SEMI;
297290
match ident with
298291
None ->
@@ -307,7 +300,7 @@ and parse_atomic_ty (ps:pstate) : Ast.ty =
307300
| FN | ITER ->
308301
if layer <> Ast.LAYER_value
309302
then raise (err "layer specified for fn or iter" ps);
310-
Ast.TY_fn (fst (parse_ty_fn effect ps))
303+
Ast.TY_fn (fst (parse_ty_fn ps))
311304
| _ -> raise (unexpected ps)
312305
end
313306

src/boot/fe/token.ml

+2-4
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ type token =
8787
| STATE
8888
| GC
8989

90-
(* Effect keywords *)
91-
| IMPURE
90+
(* Unsafe-block keyword *)
9291
| UNSAFE
9392

9493
(* Type qualifiers *)
@@ -251,8 +250,7 @@ let rec string_of_tok t =
251250
| STATE -> "state"
252251
| GC -> "gc"
253252

254-
(* Effect keywords *)
255-
| IMPURE -> "impure"
253+
(* Unsafe-block keyword *)
256254
| UNSAFE -> "unsafe"
257255

258256
(* Type qualifiers *)

0 commit comments

Comments
 (0)