From 62c0731399525d736de1c4e303c1abd1677a8d0c Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sat, 16 Aug 2008 15:09:53 -0400 Subject: Compiling a con-tuple-using test case --- src/reduce.sml | 3 +++ tests/ctuple.lac | 9 +++++++++ tests/tuple.lac | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 tests/ctuple.lac diff --git a/src/reduce.sml b/src/reduce.sml index c2359c26..e8d51da7 100644 --- a/src/reduce.sml +++ b/src/reduce.sml @@ -123,6 +123,9 @@ fun con env c = (_, _, SOME c') => #1 c' | _ => c) | CConcat ((CRecord (k, xcs1), loc), (CRecord (_, xcs2), _)) => CRecord (k, xcs1 @ xcs2) + + | CProj ((CTuple cs, _), n) => #1 (List.nth (cs, n - 1)) + | _ => c and reduceCon env = U.Con.mapB {kind = kind, con = con, bind = bindC} env diff --git a/tests/ctuple.lac b/tests/ctuple.lac new file mode 100644 index 00000000..68c1301f --- /dev/null +++ b/tests/ctuple.lac @@ -0,0 +1,9 @@ +val page = fn p :: (Type * Type) => fn f : p.1 -> string => fn x : p.1 => + {cdata (f x)} + + +val page_string = page [(string, int)] (fn x => x) + +val main : unit -> page = fn () => + Hi + diff --git a/tests/tuple.lac b/tests/tuple.lac index fb14aad9..555cfd0c 100644 --- a/tests/tuple.lac +++ b/tests/tuple.lac @@ -10,4 +10,4 @@ val bizarro_x = case x of (a, b, c) => (c, a, b) val main : unit -> page = fn () => {cdata bizarro_x.1} - \ No newline at end of file + -- cgit v1.2.3