git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Fix GHC 7.8 compilation with composition changes
a411755Brian McKenna
src/Language/PureScript/CodeGen/JS/AST.hs+3−2
@@ -17,9 +17,10 @@
17
17
18module Language.PureScript.CodeGen.JS.AST where
18module Language.PureScript.CodeGen.JS.AST where
19
19
20−import Control.Monad ((>=>))
20+import Control.Applicative (Applicative, (<$>), (<*>))
21import Control.Monad.Identity
21import Control.Monad.Identity
22import Data.Data
22import Data.Data
23+import Data.Traversable (traverse)
23
24
24import Language.PureScript.Comments
25import Language.PureScript.Comments
25
26
@@ -285,7 +286,7 @@ everywhereOnJS f = go
285everywhereOnJSTopDown :: (JS -> JS) -> JS -> JS
286everywhereOnJSTopDown :: (JS -> JS) -> JS -> JS
286everywhereOnJSTopDown f = runIdentity . everywhereOnJSTopDownM (Identity . f)
287everywhereOnJSTopDown f = runIdentity . everywhereOnJSTopDownM (Identity . f)
287
288
288−everywhereOnJSTopDownM :: (Monad m) => (JS -> m JS) -> JS -> m JS
289+everywhereOnJSTopDownM :: (Applicative m, Monad m) => (JS -> m JS) -> JS -> m JS
289everywhereOnJSTopDownM f = f >=> go
290everywhereOnJSTopDownM f = f >=> go
290 where
291 where
291 f' = f >=> go
292 f' = f >=> go
src/Language/PureScript/CodeGen/JS/Optimizer.hs+3−2
@@ -37,6 +37,7 @@ module Language.PureScript.CodeGen.JS.Optimizer (
37 optimize
37 optimize
38) where
38) where
39
39
40+import Control.Applicative (Applicative)
40import Control.Monad.Reader (MonadReader, ask, asks)
41import Control.Monad.Reader (MonadReader, ask, asks)
41import Control.Monad.Supply.Class (MonadSupply)
42import Control.Monad.Supply.Class (MonadSupply)
42
43
@@ -54,12 +55,12 @@ import Language.PureScript.CodeGen.JS.Optimizer.Blocks
54-- |
55-- |
55-- Apply a series of optimizer passes to simplified Javascript code
56-- Apply a series of optimizer passes to simplified Javascript code
56--
57--
57−optimize :: (Monad m, MonadReader (Options mode) m, MonadSupply m) => JS -> m JS
58+optimize :: (Monad m, MonadReader (Options mode) m, Applicative m, MonadSupply m) => JS -> m JS
58optimize js = do
59optimize js = do
59 noOpt <- asks optionsNoOptimizations
60 noOpt <- asks optionsNoOptimizations
60 if noOpt then return js else optimize' js
61 if noOpt then return js else optimize' js
61
62
62−optimize' :: (Monad m, MonadReader (Options mode) m, MonadSupply m) => JS -> m JS
63+optimize' :: (Monad m, MonadReader (Options mode) m, Applicative m, MonadSupply m) => JS -> m JS
63optimize' js = do
64optimize' js = do
64 opts <- ask
65 opts <- ask
65 untilFixedPoint (inlineArrComposition . applyAll
66 untilFixedPoint (inlineArrComposition . applyAll
src/Language/PureScript/CodeGen/JS/Optimizer/Inliner.hs+2−1
@@ -25,6 +25,7 @@ module Language.PureScript.CodeGen.JS.Optimizer.Inliner (
25 evaluateIifes
25 evaluateIifes
26) where
26) where
27
27
28+import Control.Applicative (Applicative)
28import Control.Monad.Supply.Class (MonadSupply, freshName)
29import Control.Monad.Supply.Class (MonadSupply, freshName)
29import Data.Maybe (fromMaybe)
30import Data.Maybe (fromMaybe)
30
31
@@ -249,7 +250,7 @@ inlineAppliedVars = everywhereOnJS convert
249
250
250-- (f <<< g $ x) = f (g x)
251-- (f <<< g $ x) = f (g x)
251-- (f <<< g) = \x -> f (g x)
252-- (f <<< g) = \x -> f (g x)
252−inlineArrComposition :: (MonadSupply m) => JS -> m JS
253+inlineArrComposition :: (Applicative m, MonadSupply m) => JS -> m JS
253inlineArrComposition = everywhereOnJSTopDownM convert
254inlineArrComposition = everywhereOnJSTopDownM convert
254 where
255 where
255 convert :: (MonadSupply m) => JS -> m JS
256 convert :: (MonadSupply m) => JS -> m JS