From f726c992ab2506ae3fb8a52993b2c46a1ae0a3b1 Mon Sep 17 00:00:00 2001 From: Alasdair Armstrong Date: Thu, 21 Sep 2017 15:54:57 +0100 Subject: Cleaning up the AST and removing redundant and/or unused nodes --- test/typecheck/pass/ex_cast.sail | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 test/typecheck/pass/ex_cast.sail (limited to 'test') diff --git a/test/typecheck/pass/ex_cast.sail b/test/typecheck/pass/ex_cast.sail new file mode 100644 index 00000000..5ea22d14 --- /dev/null +++ b/test/typecheck/pass/ex_cast.sail @@ -0,0 +1,12 @@ + +default Order dec + +val cast int -> exist 'n. [:'n:] effect pure ex_int + +val [:'n:] -> bit['n] effect pure zeros + +val int -> unit effect pure test + +function test n = { + x := zeros(n) +} -- cgit v1.2.3 From d3604c52e19e4e71965b5d96d6fab879bac7effc Mon Sep 17 00:00:00 2001 From: Alasdair Armstrong Date: Fri, 6 Oct 2017 17:56:30 +0100 Subject: Remove BK_effect constructor --- test/typecheck/pass/nzcv.sail | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'test') diff --git a/test/typecheck/pass/nzcv.sail b/test/typecheck/pass/nzcv.sail index a477cd97..3e23e529 100644 --- a/test/typecheck/pass/nzcv.sail +++ b/test/typecheck/pass/nzcv.sail @@ -4,6 +4,10 @@ val bit[4] -> unit effect pure test function test nzcv = { + N := 0b0; + Z := 0b0; + C := 0b0; + V := 0b0; (N,Z,C,V) := nzcv; () } -- cgit v1.2.3 From 34d76d1234bfd3ecae1e3e39687d0d202c0fb02c Mon Sep 17 00:00:00 2001 From: Alasdair Armstrong Date: Mon, 9 Oct 2017 19:01:36 +0100 Subject: Improvements to menhir pretty printer and ocaml backend Menhir pretty printer can now print enough sail to be useful with ASL parser Fixity declarations are now preserved in the AST Menhir parser now runs without the Pre-lexer Ocaml backend now supports variant typedefs, as the machinery to generate arbitrary instances of variant types has been added to the -undefined_gen flag --- test/ocaml/loop/expect | 100 ++++++++++++++++++++++++++++++++++++++++++++++ test/ocaml/loop/loop.sail | 18 +++++++++ 2 files changed, 118 insertions(+) create mode 100644 test/ocaml/loop/expect create mode 100644 test/ocaml/loop/loop.sail (limited to 'test') diff --git a/test/ocaml/loop/expect b/test/ocaml/loop/expect new file mode 100644 index 00000000..190423f8 --- /dev/null +++ b/test/ocaml/loop/expect @@ -0,0 +1,100 @@ +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 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 diff --git a/test/ocaml/loop/loop.sail b/test/ocaml/loop/loop.sail new file mode 100644 index 00000000..5ab0e817 --- /dev/null +++ b/test/ocaml/loop/loop.sail @@ -0,0 +1,18 @@ + +val extern int -> string effect pure string_of_int = "string_of_big_int" + +val extern (int, int) -> int effect pure add = "add" +val extern (int, int) -> bool effect pure lt = "lt_int" + +overload (deinfix +) [add] +overload (deinfix <) [lt] + +val unit -> unit effect pure main + +function main () = { + (int) x := 0; + while x < 100 do { + x := x + 1; + print(string_of_int(x)) + } +} -- cgit v1.2.3