forked from AU-COBRA/ConCert
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCounterRust.v
More file actions
33 lines (28 loc) · 1.37 KB
/
CounterRust.v
File metadata and controls
33 lines (28 loc) · 1.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
From ConCert.Examples.Counter Require Counter.
From ConCert.Extraction Require Import Common.
From ConCert.Extraction Require Import ConcordiumExtract.
From TypedExtraction Require Import RustExtract.
From Stdlib Require Import Bool.
From MetaRocq.Template Require Import All.
Definition COUNTER_MODULE : ConcordiumMod _ _ :=
{| concmd_contract_name := "counter"%bs;
concmd_init := @ConCert.Examples.Counter.Counter.counter_init;
concmd_receive := @ConCert.Examples.Counter.Counter.counter_receive;
concmd_extra := []; |}.
(* NOTE: it is important to declare a printing config, otherwise MetaRocq evaluation tries to normalize a term with an unresolved instance and runs out of memory. *)
#[local]
Instance RustConfig : RustPrintConfig :=
{| term_box_symbol := "()";
type_box_symbol := "()";
any_type_symbol := "()";
print_full_names := false |}.
Redirect "concordium-extract/counter.rs"
MetaRocq Run (concordium_extraction
COUNTER_MODULE
(ConcordiumRemap.build_remaps
(ConcordiumRemap.remap_Z_arith ++ ConcordiumRemap.remap_blockchain_consts)
[]
(ConcordiumRemap.remap_blockchain_inductives
++ ConcordiumRemap.remap_std_types))
(fun kn => eq_kername <%% bool_rec %%> kn
|| eq_kername <%% bool_rect %%> kn)).