summaryrefslogtreecommitdiff
path: root/src/core_util.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-05-14 09:11:58 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-05-14 09:11:58 -0400
commit9e6bd5dd1394c99f0a9b29369a4957c958e0830c (patch)
tree40c991c6a8032bc73433e5d3f9c1db78a98674ef /src/core_util.sml
parent22b407de7cf9ee5cc5947369372d9ca8373134a6 (diff)
Fix a nasty binding bug in CoreUtil
Diffstat (limited to 'src/core_util.sml')
-rw-r--r--src/core_util.sml8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/core_util.sml b/src/core_util.sml
index ae956121..e3ec8a1d 100644
--- a/src/core_util.sml
+++ b/src/core_util.sml
@@ -772,7 +772,13 @@ fun mapfoldB {kind = fk, con = fc, exp = fe, bind} =
| PConFfi {mod = m, datatyp, params, con, arg, kind} =>
S.map2 ((case arg of
NONE => S.return2 NONE
- | SOME c => S.map2 (mfc ctx c, SOME)),
+ | SOME c =>
+ let
+ val k = (KType, ErrorMsg.dummySpan)
+ val ctx' = foldl (fn (x, ctx) => bind (ctx, RelC (x, k))) ctx params
+ in
+ S.map2 (mfc ctx' c, SOME)
+ end),
fn arg' =>
PConFfi {mod = m, datatyp = datatyp, params = params,
con = con, arg = arg', kind = kind})