diff options
Diffstat (limited to 'src/core_untangle.sml')
-rw-r--r-- | src/core_untangle.sml | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/core_untangle.sml b/src/core_untangle.sml index 480ec7a4..f00bd95b 100644 --- a/src/core_untangle.sml +++ b/src/core_untangle.sml @@ -38,19 +38,20 @@ structure IM = IntBinaryMap fun default (k, s) = s fun exp thisGroup (e, s) = - case e of - ENamed n => - if IS.member (thisGroup, n) then - IS.add (s, n) - else - s - | EClosure (n, _) => - if IS.member (thisGroup, n) then - IS.add (s, n) - else - s - - | _ => s + let + fun try n = + if IS.member (thisGroup, n) then + IS.add (s, n) + else + s + in + case e of + ENamed n => try n + | EClosure (n, _) => try n + | EServerCall (n, _, _, _, _) => try n + | ETailCall (n, _, _, _, _) => try n + | _ => s + end fun untangle file = let |