git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Merge pull request #452 from purescript/EffBug
549a652Phil Freeman
purescript.cabal+1−1
@@ -1,5 +1,5 @@
1name: purescript
1name: purescript
2−version: 0.5.2.4
2+version: 0.5.2.5
3cabal-version: >=1.8
3cabal-version: >=1.8
4build-type: Custom
4build-type: Custom
5license: MIT
5license: MIT
src/Language/PureScript/Optimizer.hs−3
@@ -19,8 +19,6 @@
19--
19--
20-- * Inlining of (>>=) and ret for the Eff monad
20-- * Inlining of (>>=) and ret for the Eff monad
21--
21--
22−-- * Removal of unused variables
23−--
24-- * Removal of unnecessary thunks
22-- * Removal of unnecessary thunks
25--
23--
26-- * Eta conversion
24-- * Eta conversion
@@ -57,7 +55,6 @@ optimize opts | optionsNoOptimizations opts = id
57 [ collapseNestedBlocks
55 [ collapseNestedBlocks
58 , tco opts
56 , tco opts
59 , magicDo opts
57 , magicDo opts
60− , removeUnusedVariables
61 , removeCodeAfterReturnStatements
58 , removeCodeAfterReturnStatements
62 , unThunk
59 , unThunk
63 , etaConvert
60 , etaConvert
src/Language/PureScript/Optimizer/Unused.hs−11
@@ -14,23 +14,12 @@
14-----------------------------------------------------------------------------
14-----------------------------------------------------------------------------
15
15
16module Language.PureScript.Optimizer.Unused (
16module Language.PureScript.Optimizer.Unused (
17− removeUnusedVariables,
18 removeCodeAfterReturnStatements
17 removeCodeAfterReturnStatements
19) where
18) where
20
19
21import Language.PureScript.CodeGen.JS.AST
20import Language.PureScript.CodeGen.JS.AST
22import Language.PureScript.Optimizer.Common
21import Language.PureScript.Optimizer.Common
23
22
24−removeUnusedVariables :: JS -> JS
25−removeUnusedVariables = everywhereOnJS (removeFromBlock withBlock)
26− where
27− withBlock :: [JS] -> [JS]
28− withBlock sts = go sts sts
29− go :: [JS] -> [JS] -> [JS]
30− go _ [] = []
31− go sts (JSVariableIntroduction var _ : rest) | not (any (isUsed var) sts) = go sts rest
32− go sts (s : rest) = s : go sts rest
33−
34removeCodeAfterReturnStatements :: JS -> JS
23removeCodeAfterReturnStatements :: JS -> JS
35removeCodeAfterReturnStatements = everywhereOnJS (removeFromBlock go)
24removeCodeAfterReturnStatements = everywhereOnJS (removeFromBlock go)
36 where
25 where