comparison src/core_util.sml @ 796:6271f0e3c272

Fix a nasty binding bug in CoreUtil
author Adam Chlipala <adamc@hcoop.net>
date Thu, 14 May 2009 09:11:58 -0400
parents 8688e01ae469
children ef6de4075dc1
comparison
equal deleted inserted replaced
795:b87e71e45536 796:6271f0e3c272
770 case pc of 770 case pc of
771 PConVar _ => S.return2 pc 771 PConVar _ => S.return2 pc
772 | PConFfi {mod = m, datatyp, params, con, arg, kind} => 772 | PConFfi {mod = m, datatyp, params, con, arg, kind} =>
773 S.map2 ((case arg of 773 S.map2 ((case arg of
774 NONE => S.return2 NONE 774 NONE => S.return2 NONE
775 | SOME c => S.map2 (mfc ctx c, SOME)), 775 | SOME c =>
776 let
777 val k = (KType, ErrorMsg.dummySpan)
778 val ctx' = foldl (fn (x, ctx) => bind (ctx, RelC (x, k))) ctx params
779 in
780 S.map2 (mfc ctx' c, SOME)
781 end),
776 fn arg' => 782 fn arg' =>
777 PConFfi {mod = m, datatyp = datatyp, params = params, 783 PConFfi {mod = m, datatyp = datatyp, params = params,
778 con = con, arg = arg', kind = kind}) 784 con = con, arg = arg', kind = kind})
779 in 785 in
780 mfe 786 mfe