# HG changeset patch # User Adam Chlipala # Date 1297345606 18000 # Node ID bd6c90f5a4289854d1c14e1c245c1ddd4609f6dd # Parent 07ef5771568db14334a330995299a075d053907e Fix some cookie-related bugs in MonoReduce diff -r 07ef5771568d -r bd6c90f5a428 src/mono_reduce.sml --- a/src/mono_reduce.sml Tue Feb 08 16:54:01 2011 -0500 +++ b/src/mono_reduce.sml Thu Feb 10 08:46:46 2011 -0500 @@ -76,7 +76,7 @@ | EDml _ => true | ENextval _ => true | ESetval _ => true - | EUnurlify _ => false + | EUnurlify (e, _, _) => impure e | EAbs _ => false | EPrim _ => false @@ -395,6 +395,10 @@ | EFfi _ => [] | EFfiApp ("Basis", "get_cookie", [e]) => summarize d e @ [ReadCookie] + | EFfiApp ("Basis", "set_cookie", es) => + List.concat (map (summarize d) es) @ [WriteCookie] + | EFfiApp ("Basis", "clear_cookie", es) => + List.concat (map (summarize d) es) @ [WriteCookie] | EFfiApp (m, x, es) => if Settings.isEffectful (m, x) orelse Settings.isBenignEffectful (m, x) then List.concat (map (summarize d) es) @ [if m = "Basis" andalso String.isSuffix "_w" x then @@ -523,8 +527,8 @@ val r = subExpInExp (0, e') b in (*Print.prefaces "doSub" [("e'", MonoPrint.p_exp env e'), - ("b", MonoPrint.p_exp (E.pushERel env x t NONE) b), - ("r", MonoPrint.p_exp env r)];*) + ("b", MonoPrint.p_exp (E.pushERel env x t NONE) b), + ("r", MonoPrint.p_exp env r)];*) #1 (reduceExp env r) end diff -r 07ef5771568d -r bd6c90f5a428 tests/cookieClear.ur --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/cookieClear.ur Thu Feb 10 08:46:46 2011 -0500 @@ -0,0 +1,19 @@ +cookie c : int + +fun setit () = + setCookie c {Value = 13, + Expires = None, + Secure = False}; + return + +fun doit () = + ro <- getCookie c; + clearCookie c; + case ro of + None => return None + | Some v => return Some {[v]} + +fun main () = return +
+
+
diff -r 07ef5771568d -r bd6c90f5a428 tests/cookieClear.urp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/cookieClear.urp Thu Feb 10 08:46:46 2011 -0500 @@ -0,0 +1,1 @@ +cookieClear diff -r 07ef5771568d -r bd6c90f5a428 tests/cookieClear.urs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/cookieClear.urs Thu Feb 10 08:46:46 2011 -0500 @@ -0,0 +1,1 @@ +val main : unit -> transaction page