aboutsummaryrefslogtreecommitdiff
path: root/test-suite/output/StringSyntax.v
diff options
context:
space:
mode:
authorPierre Roux2020-09-03 13:27:00 +0200
committerPierre Roux2020-11-05 00:20:51 +0100
commitb6214bd4d5d3003e9b60411a717e84277feead24 (patch)
treecd0a04bbf1b9e43d21ec5944c4458d74797c5b09 /test-suite/output/StringSyntax.v
parent3b766fd8859b692e3e93cf83bf87d393e32c572e (diff)
[string notation] Handle parameterized inductives and non inductives
Diffstat (limited to 'test-suite/output/StringSyntax.v')
-rw-r--r--test-suite/output/StringSyntax.v45
1 files changed, 45 insertions, 0 deletions
diff --git a/test-suite/output/StringSyntax.v b/test-suite/output/StringSyntax.v
index aab6e0bb03..49584487a3 100644
--- a/test-suite/output/StringSyntax.v
+++ b/test-suite/output/StringSyntax.v
@@ -50,3 +50,48 @@ Local Close Scope byte_scope.
Local Open Scope char_scope.
Compute List.map Ascii.ascii_of_nat (List.seq 0 256).
Local Close Scope char_scope.
+
+(* Test numeral notations for parameterized inductives *)
+Module Test2.
+
+Notation string := (list Byte.byte).
+Definition id_string := @id string.
+
+String Notation string id_string id_string : list_scope.
+
+Check "abc"%list.
+
+End Test2.
+
+(* Test the via ... using ... option *)
+Module Test3.
+
+Inductive I :=
+| IO : I
+| IS : I -> I.
+
+Definition of_byte (x : Byte.byte) : I :=
+ let fix f n :=
+ match n with
+ | O => IO
+ | S n => IS (f n)
+ end in
+ f (Byte.to_nat x).
+
+Definition to_byte (x : I) : option Byte.byte :=
+ let fix f i :=
+ match i with
+ | IO => O
+ | IS i => S (f i)
+ end in
+ Byte.of_nat (f x).
+
+String Notation nat of_byte to_byte (via I mapping [O => IO, S => IS]) : nat_scope.
+
+Check "000".
+Check "001".
+Check "002".
+Check "255".
+Fail Check "256".
+
+End Test3.