summaryrefslogtreecommitdiff
path: root/src/reduce.sml
diff options
context:
space:
mode:
Diffstat (limited to 'src/reduce.sml')
-rw-r--r--src/reduce.sml7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/reduce.sml b/src/reduce.sml
index c5733b97..f065fe2b 100644
--- a/src/reduce.sml
+++ b/src/reduce.sml
@@ -247,6 +247,11 @@ fun passive (e : exp) =
| EField (e, _, _) => passive e
| _ => false
+fun notFfi (t : con) =
+ case #1 t of
+ CFfi _ => false
+ | _ => true
+
fun kindConAndExp (namedC, namedE) =
let
fun kind env (all as (k, loc)) =
@@ -793,7 +798,7 @@ fun kindConAndExp (namedC, namedE) =
val t = con env t
in
- if passive e1' orelse count e2 <= 1 orelse ESpecialize.functionInside t then
+ if notFfi t andalso (passive e1' orelse count e2 <= 1 orelse ESpecialize.functionInside t) then
exp (KnownE e1 :: env) e2
else
(ELet (x, t, e1', exp (UnknownE :: env) e2), loc)