@@ -53,19 +53,21 @@ import Language.PureScript.Optimizer.Blocks
54optimize :: Options -> JS -> JS
54optimize :: Options -> JS -> JS
55optimize opts | optionsNoOptimizations opts = id
55optimize opts | optionsNoOptimizations opts = id
56− | otherwise = untilFixedPoint $ applyAll
56+ | otherwise = untilFixedPoint (applyAll
57 [ collapseNestedBlocks
57 [ collapseNestedBlocks
58 , tco opts
58 , tco opts
59 , magicDo opts
59 , magicDo opts
60 , removeUnusedVariables
60 , removeUnusedVariables
61+ , removeCodeAfterReturnStatements
62 , etaConvert
63 , etaConvert
63 , inlineVariables
65 , inlineVariables
64 , inlineOperator (C.$) $ \f x -> JSApp f [x]
66 , inlineOperator (C.$) $ \f x -> JSApp f [x]
65 , inlineOperator (C.#) $ \x f -> JSApp f [x]
67 , inlineOperator (C.#) $ \x f -> JSApp f [x]
66 , inlineOperator (C.!!) $ flip JSIndexer
68 , inlineOperator (C.!!) $ flip JSIndexer
67 , inlineOperator (C.++) $ JSBinary Add
69 , inlineOperator (C.++) $ JSBinary Add
68− , inlineCommonOperators ]
70+ , inlineCommonOperators ])
70untilFixedPoint :: (Eq a) => (a -> a) -> a -> a
72untilFixedPoint :: (Eq a) => (a -> a) -> a -> a
71untilFixedPoint f = go
73untilFixedPoint f = go