summaryrefslogtreecommitdiff
path: root/compiler/SymbolicAst.ml
diff options
context:
space:
mode:
authorSon HO2023-08-07 10:42:15 +0200
committerGitHub2023-08-07 10:42:15 +0200
commit1cbc7ce007cf3433a6df9bdeb12c4e27511fad9c (patch)
treec15a16b591cf25df3ccff87ad4cd7c46ddecc489 /compiler/SymbolicAst.ml
parent887d0ef1efc8912c6273b5ebcf979384e9d7fa97 (diff)
parent9e14cdeaf429e9faff2d1efdcf297c1ac7dc7f1f (diff)
Merge pull request #32 from AeneasVerif/son_arrays
Add support for arrays/slices and const generics
Diffstat (limited to '')
-rw-r--r--compiler/SymbolicAst.ml12
1 files changed, 11 insertions, 1 deletions
diff --git a/compiler/SymbolicAst.ml b/compiler/SymbolicAst.ml
index 0e68d2fd..7dc94dcd 100644
--- a/compiler/SymbolicAst.ml
+++ b/compiler/SymbolicAst.ml
@@ -43,7 +43,10 @@ type call = {
borrows (we need to perform lookups).
*)
abstractions : V.AbstractionId.id list;
+ (* TODO: rename to "...args" *)
type_params : T.ety list;
+ (* TODO: rename to "...args" *)
+ const_generic_params : T.const_generic list;
args : V.typed_value list;
args_places : mplace option list; (** Meta information *)
dest : V.symbolic_value;
@@ -164,7 +167,7 @@ type expression =
Contexts.eval_ctx
* mplace option
* V.symbolic_value
- * V.typed_value
+ * value_aggregate
* expression
(** We introduce a new symbolic value, equal to some other value.
@@ -243,6 +246,13 @@ and expansion =
T.integer_type * (V.scalar_value * expression) list * expression
(** An integer expansion (i.e, a switch over an integer). The last
expression is for the "otherwise" branch. *)
+
+(* Remark: this type doesn't have to be mutually recursive with the other
+ types, but it makes it easy to generate the visitors *)
+and value_aggregate =
+ | SingleValue of V.typed_value (** Regular case *)
+ | Array of V.typed_value list
+ (** This is used when introducing array aggregates *)
[@@deriving
show,
visitors