Skip to content

Commit e6dff7c

Browse files
committed
---
yaml --- r: 867 b: refs/heads/master c: 7abf6eb h: refs/heads/master i: 865: 9d4a92c 863: 735079e v: v3
1 parent 6726b82 commit e6dff7c

File tree

8 files changed

+113
-75
lines changed

8 files changed

+113
-75
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: 7db115834f24eb9d9ccbd2468c9145fdf86be514
2+
refs/heads/master: 7abf6eb7c67dfb43540fdcafd6f1e69bdd2a6849

trunk/src/boot/fe/ast.ml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ and ty =
9494
| TY_task
9595

9696
| TY_native of opaque_id
97-
| TY_param of (ty_param_idx * effect)
97+
| TY_param of (ty_param_idx * stratum)
9898
| TY_named of name
9999
| TY_type
100100

@@ -181,7 +181,7 @@ and ty_fn = (ty_sig * ty_fn_aux)
181181

182182
and ty_obj_header = (slot array * constrs)
183183

184-
and ty_obj = (effect * ((ident,ty_fn) Hashtbl.t))
184+
and ty_obj = (stratum * ((ident,ty_fn) Hashtbl.t))
185185

186186
and check_calls = (lval * (atom array)) array
187187

@@ -434,7 +434,7 @@ and fn =
434434
and obj =
435435
{
436436
obj_state: header_slots;
437-
obj_effect: effect;
437+
obj_stratum: stratum;
438438
obj_constrs: constrs;
439439
obj_fns: (ident,fn identified) Hashtbl.t;
440440
obj_drop: block option;
@@ -449,10 +449,10 @@ and obj =
449449
* even if it's a type that's bound by a quantifier in its environment.
450450
*)
451451

452-
and ty_param = ident * (ty_param_idx * effect)
452+
and ty_param = ident * (ty_param_idx * stratum)
453453

454454
and mod_item' =
455-
MOD_ITEM_type of (effect * ty)
455+
MOD_ITEM_type of (stratum * ty)
456456
| MOD_ITEM_tag of (header_slots * opaque_id * int)
457457
| MOD_ITEM_mod of (mod_view * mod_items)
458458
| MOD_ITEM_fn of fn
@@ -810,7 +810,7 @@ and fmt_ty (ff:Format.formatter) (t:ty) : unit =
810810
fmt_ident_tys ff entries;
811811
fmt ff "@]"
812812

813-
| TY_param (i, e) -> (fmt_effect_qual ff e;
813+
| TY_param (i, s) -> (fmt_stratum_qual ff s;
814814
fmt ff "<p#%d>" i)
815815
| TY_native oid -> fmt ff "<native#%d>" (int_of_opaque oid)
816816
| TY_named n -> fmt_name ff n
@@ -833,9 +833,9 @@ and fmt_ty (ff:Format.formatter) (t:ty) : unit =
833833

834834
| TY_constrained ctrd -> fmt_constrained ff ctrd
835835

836-
| TY_obj (effect, fns) ->
836+
| TY_obj (stratum, fns) ->
837837
fmt_obox ff;
838-
fmt_effect_qual ff effect;
838+
fmt_stratum_qual ff stratum;
839839
fmt ff "obj ";
840840
fmt_obr ff;
841841
Hashtbl.iter
@@ -1628,8 +1628,8 @@ and fmt_slice (ff:Format.formatter) (slice:slice) : unit =
16281628

16291629

16301630
and fmt_decl_param (ff:Format.formatter) (param:ty_param) : unit =
1631-
let (ident, (i, e)) = param in
1632-
fmt_effect_qual ff e;
1631+
let (ident, (i, s)) = param in
1632+
fmt_stratum_qual ff s;
16331633
fmt_ident ff ident;
16341634
fmt ff "=<p#%d>" i
16351635

@@ -1683,7 +1683,7 @@ and fmt_obj
16831683
(obj:obj)
16841684
: unit =
16851685
fmt_obox ff;
1686-
fmt_effect_qual ff obj.obj_effect;
1686+
fmt_stratum_qual ff obj.obj_stratum;
16871687
fmt ff "obj ";
16881688
fmt_ident_and_params ff id params;
16891689
fmt_header_slots ff obj.obj_state;
@@ -1719,8 +1719,8 @@ and fmt_mod_item (ff:Format.formatter) (id:ident) (item:mod_item) : unit =
17191719
let params = Array.map (fun i -> i.node) params in
17201720
begin
17211721
match item.node.decl_item with
1722-
MOD_ITEM_type (e, ty) ->
1723-
fmt_effect_qual ff e;
1722+
MOD_ITEM_type (s, ty) ->
1723+
fmt_stratum_qual ff s;
17241724
fmt ff "type ";
17251725
fmt_ident_and_params ff id params;
17261726
fmt ff " = ";

trunk/src/boot/fe/fuzz.ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ let rec generate_mod_item (mis:mod_items) (cx:ctxt) : unit =
104104
match Random.int 2 with
105105
0 ->
106106
let ty = generate_ty cx in
107-
let eff = Ast.EFF_pure in
108-
decl (MOD_ITEM_type (eff, ty))
107+
let st = Ast.STRAT_value in
108+
decl (MOD_ITEM_type (st, ty))
109109
| _ ->
110110
let mis' = Hashtbl.create 0 in
111111
let view = { view_imports = Hashtbl.create 0;

trunk/src/boot/fe/item.ml

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -692,13 +692,12 @@ and parse_stmts_including_none (ps:pstate) : Ast.stmt array =
692692
and parse_ty_param (iref:int ref) (ps:pstate) : Ast.ty_param identified =
693693
let apos = lexpos ps in
694694
let _ = Pexp.parse_opacity ps in
695-
let _ = Pexp.parse_stratum ps in
696-
let e = Pexp.parse_effect ps in
695+
let s = Pexp.parse_stratum ps in
697696
let ident = Pexp.parse_ident ps in
698697
let i = !iref in
699698
let bpos = lexpos ps in
700699
incr iref;
701-
span ps apos bpos (ident, (i, e))
700+
span ps apos bpos (ident, (i, s))
702701

703702
and parse_ty_params (ps:pstate)
704703
: (Ast.ty_param identified) array =
@@ -843,7 +842,7 @@ and parse_optional_meta_pat (ps:pstate) (ident:Ast.ident) : Ast.meta_pat =
843842
and parse_obj_item
844843
(ps:pstate)
845844
(apos:pos)
846-
(effect:Ast.effect)
845+
(stratum:Ast.stratum)
847846
: (Ast.ident * Ast.mod_item) =
848847
expect ps OBJ;
849848
let (ident, params) = parse_ident_and_params ps "obj" in
@@ -872,7 +871,7 @@ and parse_obj_item
872871
expect ps RBRACE;
873872
let bpos = lexpos ps in
874873
let obj = { Ast.obj_state = state;
875-
Ast.obj_effect = effect;
874+
Ast.obj_stratum = stratum;
876875
Ast.obj_constrs = constrs;
877876
Ast.obj_fns = fns;
878877
Ast.obj_drop = !drop }
@@ -884,7 +883,7 @@ and parse_obj_item
884883
and parse_tag_item
885884
(ps:pstate)
886885
(apos:pos)
887-
(effect:Ast.effect)
886+
(stratum:Ast.stratum)
888887
: (Ast.ident * Ast.mod_item) array =
889888
expect ps TAG;
890889
let (ident, params) = parse_ident_and_params ps "tag" in
@@ -946,22 +945,22 @@ and parse_tag_item
946945
let ty_item =
947946
(ident,
948947
span ps apos bpos
949-
(decl params (Ast.MOD_ITEM_type (effect, ty))))
948+
(decl params (Ast.MOD_ITEM_type (stratum, ty))))
950949
in
951950
Array.append [| ty_item |] constructors
952951

953952
and parse_type_item
954953
(ps:pstate)
955954
(apos:pos)
956-
(effect:Ast.effect)
955+
(stratum:Ast.stratum)
957956
: (Ast.ident * Ast.mod_item) =
958957
expect ps TYPE;
959958
let (ident, params) = parse_ident_and_params ps "type" in
960959
let _ = expect ps EQ in
961960
let ty = ctxt "mod type item: ty" Pexp.parse_ty ps in
962961
let _ = expect ps SEMI in
963962
let bpos = lexpos ps in
964-
let item = Ast.MOD_ITEM_type (effect, ty) in
963+
let item = Ast.MOD_ITEM_type (stratum, ty) in
965964
(ident, span ps apos bpos (decl params item))
966965

967966
and parse_mod_item (ps:pstate)
@@ -993,14 +992,25 @@ and parse_mod_item (ps:pstate)
993992
STATE | GC | IMPURE | UNSAFE | ABS
994993
| TYPE | OBJ | TAG | FN | ITER ->
995994
let _ = Pexp.parse_opacity ps in
996-
let _ = Pexp.parse_stratum ps in
995+
let stratum = Pexp.parse_stratum ps in
997996
let effect = Pexp.parse_effect ps in
998997
begin
999998
match peek ps with
1000-
OBJ -> [| parse_obj_item ps apos effect |]
1001-
| TAG -> parse_tag_item ps apos effect
1002-
| TYPE -> [| parse_type_item ps apos effect |]
999+
OBJ ->
1000+
if effect <> Ast.EFF_pure
1001+
then raise (err "effect specified for obj" ps);
1002+
[| parse_obj_item ps apos stratum |]
1003+
| TAG ->
1004+
if effect <> Ast.EFF_pure
1005+
then raise (err "effect specified for tag" ps);
1006+
parse_tag_item ps apos stratum
1007+
| TYPE ->
1008+
if effect <> Ast.EFF_pure
1009+
then raise (err "effect specified for type" ps);
1010+
[| parse_type_item ps apos stratum |]
10031011
| _ ->
1012+
if stratum <> Ast.STRAT_value
1013+
then raise (err "stratum specified for fn or iter" ps);
10041014
let is_iter = (peek ps) = ITER in
10051015
bump ps;
10061016
let (ident, params) = parse_ident_and_params ps "fn" in
@@ -1149,7 +1159,7 @@ and parse_native_mod_item_from_signature (ps:pstate)
11491159
expect ps SEMI;
11501160
let bpos = lexpos ps in
11511161
[| (ident, span ps apos bpos
1152-
(decl params (Ast.MOD_ITEM_type (Ast.EFF_unsafe, t)))) |]
1162+
(decl params (Ast.MOD_ITEM_type (Ast.STRAT_value, t)))) |]
11531163

11541164
| _ -> raise (unexpected ps)
11551165

trunk/src/boot/fe/pexp.ml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -273,14 +273,15 @@ and parse_atomic_ty (ps:pstate) : Ast.ty =
273273
bump ps;
274274
Ast.TY_mach m
275275

276-
| ABS | STATE | GC | IMPURE | UNSAFE | OBJ | FN | ITER ->
277-
let _ = parse_opacity ps in
278-
let _ = parse_stratum ps in
276+
| STATE | GC | IMPURE | UNSAFE | OBJ | FN | ITER ->
277+
let stratum = parse_stratum ps in
279278
let effect = parse_effect ps in
280279
begin
281280
match peek ps with
282281
OBJ ->
283282
bump ps;
283+
if effect <> Ast.EFF_pure
284+
then raise (err "effect specified for obj" ps);
284285
let methods = Hashtbl.create 0 in
285286
let parse_method ps =
286287
let effect = parse_effect ps in
@@ -294,9 +295,11 @@ and parse_atomic_ty (ps:pstate) : Ast.ty =
294295
in
295296
ignore (bracketed_zero_or_more LBRACE RBRACE
296297
None parse_method ps);
297-
Ast.TY_obj (effect, methods)
298+
Ast.TY_obj (stratum, methods)
298299

299300
| FN | ITER ->
301+
if stratum <> Ast.STRAT_value
302+
then raise (err "stratum specified for fn or iter" ps);
300303
Ast.TY_fn (fst (parse_ty_fn effect ps))
301304
| _ -> raise (unexpected ps)
302305
end

0 commit comments

Comments
 (0)