git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Fix test suite
commit3248a2be061440b164dff560915629610aadbca8 authorPhil Freeman <paf31@cantab.net> dateFri 11 Apr 2014, 19:07 (13 years ago) parent9525739
5 files changed+14−13
prelude/prelude.purs+1−1 psci/Main.hs+1−1 src/Language/PureScript.hs+2−3 src/Language/PureScript/CodeGen/JS.hs+5−4 tests/Main.hs+5−4
prelude/prelude.purs+1−1
@@ -271,7 +271,7 @@ module Prelude where
271271 foreign import numCompare
272272 "function numCompare(n1) {\
273273 \ return function(n2) {\
274− \ return n1 < n2 ? module.LT : n1 > n2 ? module.GT : module.EQ;\
274+ \ return n1 < n2 ? LT : n1 > n2 ? GT : EQ;\
275275 \ };\
276276 \}" :: Number -> Number -> Ordering
277277
psci/Main.hs+1−1
@@ -204,7 +204,7 @@ completion = completeWord Nothing " \t\n\r" findCompletions
204204-- | Compilation options.
205205--
206206options :: 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
208208
209209-- |
210210-- PSCI monad
src/Language/PureScript.hs+2−3
@@ -78,8 +78,7 @@ compile' env opts ms = do
7878 let elim = if null entryPoints then regrouped else eliminateDeadCode entryPoints regrouped
7979 let codeGenModules = moduleNameFromString `map` optionsCodeGenModules opts
8080 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
8382 let exts = intercalate "\n" . map (`moduleToPs` env') $ modulesToCodeGen
8483 js' <- generateMain env' opts js
8584 return (prettyPrintJS js', exts, env')
@@ -129,7 +128,7 @@ generateMain env opts js =
129128 Just mmi -> do
130129 when ((mmi, Ident C.main) `M.notMember` names env) $
131130 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))))) []]
133132 _ -> return js
134133
135134-- |
src/Language/PureScript/CodeGen/JS.hs+5−4
@@ -57,9 +57,10 @@ moduleToJs :: ModuleType -> Options -> Module -> Environment -> [JS]
5757moduleToJs mt opts (Module name decls (Just exps)) env = case mt of
5858 CommonJS -> moduleBody ++ [JSAssignment (JSAccessor "exports" (JSVar "module")) moduleExports]
5959 Globals ->
60− [ JSAssignment (JSAccessor (moduleNameToJs name) (JSVar (fromJust (optionsBrowserNamespace opts)))) (
61− JSApp (JSFunction Nothing [] (JSBlock (moduleBody ++ [JSReturn moduleExports]))) []
62− )
60+ [ JSVariableIntroduction (fromJust (optionsBrowserNamespace opts))
61+ (Just (JSBinary Or (JSVar (fromJust (optionsBrowserNamespace opts))) (JSObjectLiteral [])) )
62+ , JSAssignment (JSAccessor (moduleNameToJs name) (JSVar (fromJust (optionsBrowserNamespace opts))))
63+ (JSApp (JSFunction Nothing [] (JSBlock (moduleBody ++ [JSReturn moduleExports]))) [])
6364 ]
6465 where
6566 moduleBody = JSStringLiteral "use strict" : jsImports ++ jsDecls
@@ -73,7 +74,7 @@ importToJs mt opts mn = JSVariableIntroduction (moduleNameToJs mn) (Just moduleB
7374 where
7475 moduleBody = case mt of
7576 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)))
7778
7879imports :: Declaration -> [ModuleName]
7980imports = everything (++) (mkQ [] collect)
tests/Main.hs+5−4
@@ -54,12 +54,13 @@ assert preludeExterns opts inputFile f = do
5454 Just err -> putStrLn err >> exitFailure
5555 Nothing -> return ()
5656
57−assertCompiles :: FilePath -> FilePath -> FilePath -> IO ()
57+assertCompiles :: String -> FilePath -> FilePath -> IO ()
5858assertCompiles preludeJs preludeExterns inputFile = do
5959 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" }
6161 assert preludeExterns options inputFile $ either (return . Just) $ \(js, _, _) -> do
6262 process <- findNodeProcess
63+ putStrLn $ preludeJs ++ js
6364 result <- traverse (\node -> readProcessWithExitCode node [] (preludeJs ++ js)) process
6465 case result of
6566 Just (ExitSuccess, out, _) -> putStrLn out >> return Nothing
@@ -69,7 +70,7 @@ assertCompiles preludeJs preludeExterns inputFile = do
6970assertDoesNotCompile :: FilePath -> FilePath -> IO ()
7071assertDoesNotCompile preludeExterns inputFile = do
7172 putStrLn $ "Assert " ++ inputFile ++ " does not compile"
72− assert preludeExterns P.defaultOptions inputFile $ \e ->
73+ assert preludeExterns (P.defaultOptions { P.optionsBrowserNamespace = Just "Tests" }) inputFile $ \e ->
7374 case e of
7475 Left _ -> return Nothing
7576 Right _ -> return $ Just "Should not have compiled"
@@ -82,7 +83,7 @@ main :: IO ()
8283main = do
8384 prelude <- preludeFilename
8485 putStrLn "Compiling Prelude"
85− preludeResult <- compile P.defaultOptions [prelude]
86+ preludeResult <- compile (P.defaultOptions { P.optionsBrowserNamespace = Just "Tests" }) [prelude]
8687 case preludeResult of
8788 Left err -> putStrLn err >> exitFailure
8889 Right (preludeJs, exts, _) -> do