summaryrefslogtreecommitdiff
path: root/src/elab_err.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-12-13 11:28:47 -0500
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-12-13 11:28:47 -0500
commit46d562fc3d06a5ef8b17e90c7a4dfd0547757294 (patch)
tree9f62f93b72fdb9bde85a08f36a3250c160353c54 /src/elab_err.sml
parente376aee8f22ca46b5536803fc3d80e31f79da6ff (diff)
Better record summary error messages; more tweaking SQL usability
Diffstat (limited to 'src/elab_err.sml')
-rw-r--r--src/elab_err.sml14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/elab_err.sml b/src/elab_err.sml
index 6d9bd2e6..80de9497 100644
--- a/src/elab_err.sml
+++ b/src/elab_err.sml
@@ -119,7 +119,7 @@ datatype cunify_error =
| CIncompatible of con * con
| CExplicitness of con * con
| CKindof of kind * con * string
- | CRecordFailure of con * con
+ | CRecordFailure of con * con * (con * con * con) option
fun cunifyError env err =
case err of
@@ -144,10 +144,16 @@ fun cunifyError env err =
eprefaces ("Unexpected kind for kindof calculation (expecting " ^ expected ^ ")")
[("Kind", p_kind env k),
("Con", p_con env c)]
- | CRecordFailure (c1, c2) =>
+ | CRecordFailure (c1, c2, fo) =>
eprefaces "Can't unify record constructors"
- [("Summary 1", p_con env c1),
- ("Summary 2", p_con env c2)]
+ (("Summary 1", p_con env c1)
+ :: ("Summary 2", p_con env c2)
+ :: (case fo of
+ NONE => []
+ | SOME (nm, t1, t2) =>
+ [("Field", p_con env nm),
+ ("Value 1", p_con env t1),
+ ("Value 2", p_con env t2)]))
datatype exp_error =
UnboundExp of ErrorMsg.span * string