@@ -15,8 +15,6 @@
1515
1616module Language.PureScript.Optimizer.Inliner (
1717 inlineVariables,
18− inlinePure,
19− inlineCompose,
2018 inlineOperator,
2119 inlineCommonOperators,
2220 etaConvert,
@@ -30,7 +28,6 @@ import Language.PureScript.CodeGen.JS.AST
3028import Language.PureScript.CodeGen.Common (identToJs)
3129import Language.PureScript.Optimizer.Common
3230import Language.PureScript.Names
33−import Language.PureScript.Supply (freshName, evalSupply)
3431
3532import qualified Language.PureScript.Constants as C
3633
@@ -74,32 +71,6 @@ evaluateIifes = everywhereOnJS convert
7471 convert (JSApp (JSFunction Nothing [] (JSBlock [JSReturn ret])) []) = ret
7572 convert js = js
7673
77−inlinePure :: JS -> JS
78−inlinePure = everywhereOnJS convert
79− where
80− convert :: JS -> JS
81− convert (JSApp (JSApp p eff) [js]) | isPure p && isEff eff = JSFunction Nothing [] (JSBlock [JSReturn js])
82− convert other = other
83− isPure (JSAccessor f (JSVar prelude)) = (f == C.pure' || f == C.return) && prelude == C.prelude
84− isPure _ = False
85− isEff [JSApp (JSAccessor app (JSVar eff)) _] = app == C.applicativeEffDictionary && eff == C.eff
86− isEff _ = False
87−
88−inlineCompose :: JS -> JS
89−inlineCompose = everywhereOnJS convert
90− where
91− convert :: JS -> JS
92− convert (JSApp (JSApp comp [f]) [g]) | isBackwardComp comp = JSFunction Nothing [var] (JSBlock [JSReturn (JSApp f [JSApp g [JSVar var]])])
93− convert (JSApp (JSApp comp [f]) [g]) | isForwardComp comp = JSFunction Nothing [var] (JSBlock [JSReturn (JSApp g [JSApp f [JSVar var]])])
94− convert other = other
95− var = evalSupply 1 freshName
96− isBackwardComp (JSApp (JSIndexer (JSStringLiteral comp) (JSVar prelude)) semi) = comp == (C.<<<) && prelude == C.prelude && isSemi semi
97− isBackwardComp _ = False
98− isForwardComp (JSApp (JSIndexer (JSStringLiteral comp) (JSVar prelude)) semi) = comp == (C.>>>) && prelude == C.prelude && isSemi semi
99− isForwardComp _ = False
100− isSemi [JSApp (JSAccessor semi (JSVar prelude)) _] = semi == C.semigroupoidArr && prelude == C.prelude
101− isSemi _ = False
102−
10374inlineVariables :: JS -> JS
10475inlineVariables = everywhereOnJS $ removeFromBlock go
10576 where