diff options
| author | Graydon Hoare <[email protected]> | 2011-04-19 13:35:49 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2011-04-19 13:35:49 -0700 |
| commit | d2bd07dcb02783063375b6c8532fceaf9fa9d50f (patch) | |
| tree | a253b5eadb140d14bc99d1456e316ce1e210a6be /src/boot/fe | |
| parent | rustc: Allow glue to be emitted even for scalar types; this is necessary to s... (diff) | |
| download | rust-d2bd07dcb02783063375b6c8532fceaf9fa9d50f.tar.xz rust-d2bd07dcb02783063375b6c8532fceaf9fa9d50f.zip | |
Remove effect system from src.
Diffstat (limited to 'src/boot/fe')
| -rw-r--r-- | src/boot/fe/ast.ml | 27 | ||||
| -rw-r--r-- | src/boot/fe/cexp.ml | 6 | ||||
| -rw-r--r-- | src/boot/fe/item.ml | 27 | ||||
| -rw-r--r-- | src/boot/fe/lexer.mll | 1 | ||||
| -rw-r--r-- | src/boot/fe/pexp.ml | 21 | ||||
| -rw-r--r-- | src/boot/fe/token.ml | 6 |
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 *) |