changeset 2152:2d9e40e726f2

Adjust new [assert] to work properly from top.ur
author Adam Chlipala <adam@chlipala.net>
date Wed, 03 Jun 2015 09:55:37 -0400
parents 4cd36865e0b5
children 39bd1d4007a9
files lib/ur/top.ur lib/ur/top.urs
diffstat 2 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lib/ur/top.ur	Wed Jun 03 15:07:46 2015 +0200
+++ b/lib/ur/top.ur	Wed Jun 03 09:55:37 2015 -0400
@@ -412,4 +412,4 @@
     if x < y then x else y
 
 fun assert [a] (cond: bool) (msg: string) (loc: string) (x:a): a =
-  if cond then x else error <xml>{[msg]} at {[loc]}</xml>
+  if cond then x else error <xml>{txt msg} at {txt loc}</xml>
--- a/lib/ur/top.urs	Wed Jun 03 15:07:46 2015 +0200
+++ b/lib/ur/top.urs	Wed Jun 03 09:55:37 2015 -0400
@@ -35,7 +35,7 @@
 con thd3 = K1 ==> K2 ==> K3 ==> fn t :: (K1 * K2 * K3) => t.3
 
 (* Convert a record of n Units into a type-level record where
-   each field has the same value (which describes a uniformly
+o   each field has the same value (which describes a uniformly
    typed record) *)
 con mapU = K ==> fn f :: K => map (fn _ :: Unit => f)
 
@@ -290,3 +290,10 @@
 
 val max : t ::: Type -> ord t -> t -> t -> t
 val min : t ::: Type -> ord t -> t -> t -> t
+
+val assert : t ::: Type
+             -> bool   (* Did we avoid something bad? *)
+             -> string (* Explanation of the bad thing *)
+             -> string (* Source location of the bad thing *)
+             -> t      (* Return this value if all went well. *)
+             -> t