git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Fix test suite
3248a2bPhil Freeman
prelude/prelude.purs+1−1
@@ -271,7 +271,7 @@ module Prelude where
271 foreign import numCompare
271 foreign import numCompare
272 "function numCompare(n1) {\
272 "function numCompare(n1) {\
273 \ return function(n2) {\
273 \ return function(n2) {\
274− \ return n1 < n2 ? module.LT : n1 > n2 ? module.GT : module.EQ;\
274+ \ return n1 < n2 ? LT : n1 > n2 ? GT : EQ;\
275 \ };\
275 \ };\
276 \}" :: Number -> Number -> Ordering
276 \}" :: Number -> Number -> Ordering
277
277
psci/Main.hs+1−1
@@ -204,7 +204,7 @@ completion = completeWord Nothing " \t\n\r" findCompletions
204-- | Compilation options.
204-- | Compilation options.
205--
205--
206options :: P.Options
206options :: P.Options
207−options = P.Options False True False True Nothing True (Just "PS") [] [] False
207+options = P.Options False True False True Nothing True Nothing [] [] False
208
208
209-- |
209-- |
210-- PSCI monad
210-- PSCI monad
src/Language/PureScript.hs+2−3
@@ -78,8 +78,7 @@ compile' env opts ms = do
78 let elim = if null entryPoints then regrouped else eliminateDeadCode entryPoints regrouped
78 let elim = if null entryPoints then regrouped else eliminateDeadCode entryPoints regrouped
79 let codeGenModules = moduleNameFromString `map` optionsCodeGenModules opts
79 let codeGenModules = moduleNameFromString `map` optionsCodeGenModules opts
80 let modulesToCodeGen = if null codeGenModules then elim else filter (\(Module mn _ _) -> mn `elem` codeGenModules) elim
80 let modulesToCodeGen = if null codeGenModules then elim else filter (\(Module mn _ _) -> mn `elem` codeGenModules) elim
81− let js = JSVariableIntroduction (fromJust (optionsBrowserNamespace opts)) (Just (JSObjectLiteral []))
82− : concatMap (\m -> moduleToJs Globals opts m env') modulesToCodeGen
81+ let js = concatMap (\m -> moduleToJs Globals opts m env') modulesToCodeGen
83 let exts = intercalate "\n" . map (`moduleToPs` env') $ modulesToCodeGen
82 let exts = intercalate "\n" . map (`moduleToPs` env') $ modulesToCodeGen
84 js' <- generateMain env' opts js
83 js' <- generateMain env' opts js
85 return (prettyPrintJS js', exts, env')
84 return (prettyPrintJS js', exts, env')
@@ -129,7 +128,7 @@ generateMain env opts js =
129 Just mmi -> do
128 Just mmi -> do
130 when ((mmi, Ident C.main) `M.notMember` names env) $
129 when ((mmi, Ident C.main) `M.notMember` names env) $
131 Left $ show mmi ++ "." ++ C.main ++ " is undefined"
130 Left $ show mmi ++ "." ++ C.main ++ " is undefined"
132− return $ js ++ [JSApp (JSAccessor C.main (JSVar (moduleNameToJs mmi))) []]
131+ return $ js ++ [JSApp (JSAccessor C.main (JSAccessor (moduleNameToJs mmi) (JSVar (fromJust (optionsBrowserNamespace opts))))) []]
133 _ -> return js
132 _ -> return js
134
133
135-- |
134-- |
src/Language/PureScript/CodeGen/JS.hs+5−4
@@ -57,9 +57,10 @@ moduleToJs :: ModuleType -> Options -> Module -> Environment -> [JS]
57moduleToJs mt opts (Module name decls (Just exps)) env = case mt of
57moduleToJs mt opts (Module name decls (Just exps)) env = case mt of
58 CommonJS -> moduleBody ++ [JSAssignment (JSAccessor "exports" (JSVar "module")) moduleExports]
58 CommonJS -> moduleBody ++ [JSAssignment (JSAccessor "exports" (JSVar "module")) moduleExports]
59 Globals ->
59 Globals ->
60+ [ JSVariableIntroduction (fromJust (optionsBrowserNamespace opts))
61+ (Just (JSBinary Or (JSVar (fromJust (optionsBrowserNamespace opts))) (JSObjectLiteral [])) )
60− [ JSAssignment (JSAccessor (moduleNameToJs name) (JSVar (fromJust (optionsBrowserNamespace opts)))) (
62+ , JSAssignment (JSAccessor (moduleNameToJs name) (JSVar (fromJust (optionsBrowserNamespace opts))))
61− JSApp (JSFunction Nothing [] (JSBlock (moduleBody ++ [JSReturn moduleExports]))) []
63+ (JSApp (JSFunction Nothing [] (JSBlock (moduleBody ++ [JSReturn moduleExports]))) [])
62− )
63 ]
64 ]
64 where
65 where
65 moduleBody = JSStringLiteral "use strict" : jsImports ++ jsDecls
66 moduleBody = JSStringLiteral "use strict" : jsImports ++ jsDecls
@@ -73,7 +74,7 @@ importToJs mt opts mn = JSVariableIntroduction (moduleNameToJs mn) (Just moduleB
73 where
74 where
74 moduleBody = case mt of
75 moduleBody = case mt of
75 CommonJS -> JSApp (JSVar "require") [JSStringLiteral (runModuleName mn)]
76 CommonJS -> JSApp (JSVar "require") [JSStringLiteral (runModuleName mn)]
76− Globals -> JSAccessor (runModuleName mn) (JSVar (fromJust (optionsBrowserNamespace opts)))
77+ Globals -> JSAccessor (moduleNameToJs mn) (JSVar (fromJust (optionsBrowserNamespace opts)))
77
78
78imports :: Declaration -> [ModuleName]
79imports :: Declaration -> [ModuleName]
79imports = everything (++) (mkQ [] collect)
80imports = everything (++) (mkQ [] collect)
tests/Main.hs+5−4
@@ -54,12 +54,13 @@ assert preludeExterns opts inputFile f = do
54 Just err -> putStrLn err >> exitFailure
54 Just err -> putStrLn err >> exitFailure
55 Nothing -> return ()
55 Nothing -> return ()
56
56
57−assertCompiles :: FilePath -> FilePath -> FilePath -> IO ()
57+assertCompiles :: String -> FilePath -> FilePath -> IO ()
58assertCompiles preludeJs preludeExterns inputFile = do
58assertCompiles preludeJs preludeExterns inputFile = do
59 putStrLn $ "Assert " ++ inputFile ++ " compiles successfully"
59 putStrLn $ "Assert " ++ inputFile ++ " compiles successfully"
60− let options = P.defaultOptions { P.optionsMain = Just "Main", P.optionsModules = ["Main"], P.optionsCodeGenModules = ["Main"] }
60+ let options = P.defaultOptions { P.optionsMain = Just "Main", P.optionsModules = ["Main"], P.optionsCodeGenModules = ["Main"], P.optionsBrowserNamespace = Just "Tests" }
61 assert preludeExterns options inputFile $ either (return . Just) $ \(js, _, _) -> do
61 assert preludeExterns options inputFile $ either (return . Just) $ \(js, _, _) -> do
62 process <- findNodeProcess
62 process <- findNodeProcess
63+ putStrLn $ preludeJs ++ js
63 result <- traverse (\node -> readProcessWithExitCode node [] (preludeJs ++ js)) process
64 result <- traverse (\node -> readProcessWithExitCode node [] (preludeJs ++ js)) process
64 case result of
65 case result of
65 Just (ExitSuccess, out, _) -> putStrLn out >> return Nothing
66 Just (ExitSuccess, out, _) -> putStrLn out >> return Nothing
@@ -69,7 +70,7 @@ assertCompiles preludeJs preludeExterns inputFile = do
69assertDoesNotCompile :: FilePath -> FilePath -> IO ()
70assertDoesNotCompile :: FilePath -> FilePath -> IO ()
70assertDoesNotCompile preludeExterns inputFile = do
71assertDoesNotCompile preludeExterns inputFile = do
71 putStrLn $ "Assert " ++ inputFile ++ " does not compile"
72 putStrLn $ "Assert " ++ inputFile ++ " does not compile"
72− assert preludeExterns P.defaultOptions inputFile $ \e ->
73+ assert preludeExterns (P.defaultOptions { P.optionsBrowserNamespace = Just "Tests" }) inputFile $ \e ->
73 case e of
74 case e of
74 Left _ -> return Nothing
75 Left _ -> return Nothing
75 Right _ -> return $ Just "Should not have compiled"
76 Right _ -> return $ Just "Should not have compiled"
@@ -82,7 +83,7 @@ main :: IO ()
82main = do
83main = do
83 prelude <- preludeFilename
84 prelude <- preludeFilename
84 putStrLn "Compiling Prelude"
85 putStrLn "Compiling Prelude"
85− preludeResult <- compile P.defaultOptions [prelude]
86+ preludeResult <- compile (P.defaultOptions { P.optionsBrowserNamespace = Just "Tests" }) [prelude]
86 case preludeResult of
87 case preludeResult of
87 Left err -> putStrLn err >> exitFailure
88 Left err -> putStrLn err >> exitFailure
88 Right (preludeJs, exts, _) -> do
89 Right (preludeJs, exts, _) -> do