git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Fix an optimizer bug
commit53cc34f99d329384b8aa13d63a59b9984f544ba3 authorPhil Freeman <paf31@cantab.net> dateFri 10 Jan 2014, 15:06 (13 years ago) parent92e66f1
4 files changed+9−3
examples/passing/OptimizerBug.purs+5 purescript.cabal+1−1 src/Language/PureScript.hs+1−1 src/Language/PureScript/CodeGen/JS.hs+2−1
examples/passing/OptimizerBug.pursnew file+5
@@ -0,0 +1,5 @@
1+module OptimizerBug where
2+
3+x = 1 + y
4+
5+y = x
purescript.cabal+1−1
@@ -1,5 +1,5 @@
11name: purescript
2−version: 0.2.10.1
2+version: 0.2.10.2
33cabal-version: >=1.8
44build-type: Simple
55license: MIT
src/Language/PureScript.hs+1−1
@@ -33,6 +33,6 @@ compile :: Options -> [Module] -> Either String (String, String, Environment)
3333compile opts ms = do
3434 desugared <- desugar ms
3535 (_, env) <- runCheck $ forM_ desugared $ \(Module moduleName decls) -> typeCheckAll (ModuleName moduleName) decls
36− let js = prettyPrintJS . map (optimize opts) . concatMap (flip (moduleToJs opts) env) $ desugared
36+ let js = prettyPrintJS . concatMap (flip (moduleToJs opts) env) $ desugared
3737 let exts = intercalate "\n" . map (flip moduleToPs env) $ desugared
3838 return (js, exts, env)
src/Language/PureScript/CodeGen/JS.hs+2−1
@@ -33,13 +33,14 @@ import Language.PureScript.CodeGen.Monad
3333import Language.PureScript.Options
3434import Language.PureScript.CodeGen.JS.AST as AST
3535import Language.PureScript.Types
36+import Language.PureScript.CodeGen.Optimize
3637
3738moduleToJs :: Options -> Module -> Environment -> [JS]
3839moduleToJs opts (Module pname@(ProperName name) decls) env =
3940 mapMaybe filterRawDecls decls ++
4041 [ JSVariableIntroduction (Ident name) Nothing
4142 , JSApp (JSFunction Nothing [Ident name]
42− (JSBlock (concat $ mapMaybe (\decl -> declToJs opts (ModuleName pname) decl env) decls)))
43+ (JSBlock (concat $ mapMaybe (\decl -> fmap (map $ optimize opts) $ declToJs opts (ModuleName pname) decl env) decls)))
4344 [JSAssignment (JSAssignVariable (Ident name))
4445 (JSBinary Or (JSVar (Ident name)) (JSObjectLiteral []))]
4546 ]