diff options
| author | Son Ho | 2024-04-11 20:31:16 +0200 | 
|---|---|---|
| committer | Son Ho | 2024-04-11 20:31:16 +0200 | 
| commit | b6421bc01df278f625a8c95b4ea36ad2e4355718 (patch) | |
| tree | 6246ef2b038560e3deae41e4fa700f14390cd14f /compiler/Pure.ml | |
| parent | 44065f447dc3a2f4b1441b97b9687d1c1b85afbf (diff) | |
| parent | 2f8aa9b47acb5c98aed91c29b04f71099452e781 (diff) | |
Merge branch 'son/clean' into checked-ops
Diffstat (limited to '')
| -rw-r--r-- | compiler/Pure.ml | 10 | 
1 files changed, 9 insertions, 1 deletions
diff --git a/compiler/Pure.ml b/compiler/Pure.ml index 7de7e0f4..451767f8 100644 --- a/compiler/Pure.ml +++ b/compiler/Pure.ml @@ -92,7 +92,7 @@ type assumed_ty =  (* TODO: we should never directly manipulate [Return] and [Fail], but rather   * the monadic functions [return] and [fail] (makes treatment of error and   * state-error monads more uniform) *) -let result_return_id = VariantId.of_int 0 +let result_ok_id = VariantId.of_int 0  let result_fail_id = VariantId.of_int 1  let option_some_id = T.option_some_id  let option_none_id = T.option_none_id @@ -285,6 +285,7 @@ type ty =    | TArrow of ty * ty    | TTraitType of trait_ref * string        (** The string is for the name of the associated type *) +  | Error  and trait_ref = {    trait_id : trait_instance_id; @@ -621,6 +622,7 @@ class ['self] iter_expression_base =      method visit_qualif : 'env -> qualif -> unit = fun _ _ -> ()      method visit_loop_id : 'env -> loop_id -> unit = fun _ _ -> ()      method visit_field_id : 'env -> field_id -> unit = fun _ _ -> () +    method visit_meta : 'env -> Meta.meta -> unit = fun _ _ -> ()    end  (** Ancestor for {!map_expression} visitor *) @@ -632,6 +634,7 @@ class ['self] map_expression_base =      method visit_qualif : 'env -> qualif -> qualif = fun _ x -> x      method visit_loop_id : 'env -> loop_id -> loop_id = fun _ x -> x      method visit_field_id : 'env -> field_id -> field_id = fun _ x -> x +    method visit_meta : 'env -> Meta.meta -> Meta.meta = fun _ x -> x    end  (** Ancestor for {!reduce_expression} visitor *) @@ -643,6 +646,7 @@ class virtual ['self] reduce_expression_base =      method visit_qualif : 'env -> qualif -> 'a = fun _ _ -> self#zero      method visit_loop_id : 'env -> loop_id -> 'a = fun _ _ -> self#zero      method visit_field_id : 'env -> field_id -> 'a = fun _ _ -> self#zero +    method visit_meta : 'env -> Meta.meta -> 'a = fun _ _ -> self#zero    end  (** Ancestor for {!mapreduce_expression} visitor *) @@ -662,6 +666,9 @@ class virtual ['self] mapreduce_expression_base =      method visit_field_id : 'env -> field_id -> field_id * 'a =        fun _ x -> (x, self#zero) + +    method visit_meta : 'env -> Meta.meta -> Meta.meta * 'a = +      fun _ x -> (x, self#zero)    end  (** **Rk.:** here, {!expression} is not at all equivalent to the expressions @@ -726,6 +733,7 @@ type expression =    | Loop of loop  (** See the comments for {!loop} *)    | StructUpdate of struct_update  (** See the comments for {!struct_update} *)    | Meta of (emeta[@opaque]) * texpression  (** Meta-information *) +  | EError of Meta.meta option * string  and switch_body = If of texpression * texpression | Match of match_branch list  and match_branch = { pat : typed_pattern; branch : texpression }  | 
