diff options
author | Adam Chlipala <adamc@hcoop.net> | 2010-04-08 09:57:37 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2010-04-08 09:57:37 -0400 |
commit | 0e49f7ad6ea4a0cfd535677085148ab224295e93 (patch) | |
tree | e9741860302158a80e4339062e77fd5c7b5cc6cb /src/mono_reduce.sml | |
parent | 7c176fd1af9e0427443ab4a6493943f90c6c1470 (diff) |
Change query_policy to sendClient; all arguments passed to SQL predicates are variables
Diffstat (limited to 'src/mono_reduce.sml')
-rw-r--r-- | src/mono_reduce.sml | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/mono_reduce.sml b/src/mono_reduce.sml index e5dd3213..bb23a21a 100644 --- a/src/mono_reduce.sml +++ b/src/mono_reduce.sml @@ -423,18 +423,21 @@ fun reduce file = | ERecord xets => List.concat (map (summarize d o #2) xets) | EField (e, _) => summarize d e - | ECase (e, pes, _) => summarize d e @ [Unsure] - (*let + | ECase (e, pes, _) => + let val lss = map (fn (p, e) => summarize (d + patBinds p) e) pes in case lss of [] => raise Fail "Empty pattern match" | ls :: lss => - if List.all (fn ls' => ls' = ls) lss then - summarize d e @ ls - else - [Unsure] - end*) + summarize d e + @ (if List.all (fn ls' => ls' = ls) lss then + ls + else if length (List.filter (not o List.null) (ls :: lss)) <= 1 then + valOf (List.find (not o List.null) (ls :: lss)) + else + [Unsure]) + end | EStrcat (e1, e2) => summarize d e1 @ summarize d e2 | EError (e, _) => summarize d e @ [Unsure] |