git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Combine nested `if` blocks in JS
commit2add561cf9668e7ecf2c00dce0289b6051ee244b authorGary Burgess <gary.burgess@gmail.com> dateFri 18 Jul 2014, 23:15 (12 years ago) parent3d38716
2 files changed+13−3
src/Language/PureScript/Optimizer.hs+1 src/Language/PureScript/Optimizer/Blocks.hs+12−3
src/Language/PureScript/Optimizer.hs+1
@@ -53,6 +53,7 @@ optimize :: Options -> JS -> JS
5353optimize opts | optionsNoOptimizations opts = id
5454 | otherwise = untilFixedPoint (applyAll
5555 [ collapseNestedBlocks
56+ , collapseNestedIfs
5657 , tco opts
5758 , magicDo opts
5859 , removeCodeAfterReturnStatements
src/Language/PureScript/Optimizer/Blocks.hs+12−3
@@ -13,9 +13,10 @@
1313--
1414-----------------------------------------------------------------------------
1515
16−module Language.PureScript.Optimizer.Blocks (
17− collapseNestedBlocks
18−) where
16+module Language.PureScript.Optimizer.Blocks
17+ ( collapseNestedBlocks
18+ , collapseNestedIfs
19+ ) where
1920
2021import Language.PureScript.CodeGen.JS.AST
2122
@@ -31,3 +32,11 @@ collapseNestedBlocks = everywhereOnJS collapse
3132 go :: JS -> [JS]
3233 go (JSBlock sts) = sts
3334 go s = [s]
35+
36+collapseNestedIfs :: JS -> JS
37+collapseNestedIfs = everywhereOnJS collapse
38+ where
39+ collapse :: JS -> JS
40+ collapse (JSIfElse cond1 (JSBlock [JSIfElse cond2 body Nothing]) Nothing) =
41+ JSIfElse (JSBinary And cond1 cond2) body Nothing
42+ collapse js = js