@@ -95,6 +95,9 @@ tco' = everywhereOnJS convert
95 collectSelfCallArgs allArgumentValues (JSApp fn args') = collectSelfCallArgs (args' : allArgumentValues) fn
95 collectSelfCallArgs allArgumentValues (JSApp fn args') = collectSelfCallArgs (args' : allArgumentValues) fn
96 collectSelfCallArgs allArgumentValues _ = allArgumentValues
96 collectSelfCallArgs allArgumentValues _ = allArgumentValues
97 isSelfCall :: String -> JS -> Bool
97 isSelfCall :: String -> JS -> Bool
98− isSelfCall ident (JSApp (JSVar ident') _) | ident == ident' = True
98+ isSelfCall ident (JSApp (JSVar ident') args) | ident == ident' && not (any isFunction args) = True
99− isSelfCall ident (JSApp fn _) = isSelfCall ident fn
99+ isSelfCall ident (JSApp fn args) | not (any isFunction args) = isSelfCall ident fn
100 isSelfCall _ _ = False
100 isSelfCall _ _ = False
101+ isFunction :: JS -> Bool
102+ isFunction (JSFunction _ _ _) = True
103+ isFunction _ = False