git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Fix module name handling in `--main`

Not sure how I missed this originally, it was obviously completely wrong!

commit8e5e64d25f30bbb980d93c665325fd8ab0173c0d authorGary Burgess <gary.burgess@gmail.com> dateFri 21 Feb 2014, 12:48 (13 years ago) parent96264c7
2 files changed+16−11
src/Language/PureScript.hs+8−11 src/Language/PureScript/Names.hs+8
src/Language/PureScript.hs+8−11
@@ -22,6 +22,7 @@ import Language.PureScript.Declarations as P
2222import Language.PureScript.Names as P
2323import Language.PureScript.Parser as P
2424import Language.PureScript.CodeGen as P
25+import Language.PureScript.CodeGen.Common as P
2526import Language.PureScript.TypeChecker as P
2627import Language.PureScript.Pretty as P
2728import Language.PureScript.Sugar as P
@@ -63,20 +64,16 @@ compile opts ms = do
6364 modify (\s -> s { checkCurrentModule = Just moduleName })
6465 Module moduleName <$> typeCheckAll mainModuleIdent moduleName decls
6566 regrouped <- createBindingGroupsModule . collapseBindingGroupsModule $ elaborated
66− let entryPoints = (ModuleName . splitProperNames) `map` optionsModules opts
67+ let entryPoints = moduleNameFromString `map` optionsModules opts
6768 let elim = if null entryPoints then regrouped else eliminateDeadCode env entryPoints regrouped
6869 let js = mapMaybe (flip (moduleToJs opts) env) elim
6970 let exts = intercalate "\n" . map (flip moduleToPs env) $ elim
70− js' <- case optionsMain opts of
71− Just mainModuleName -> do
72− when ((ModuleName [ProperName mainModuleName], Ident "main") `M.notMember` (names env)) $
73− Left $ mainModuleName ++ ".main is undefined"
74− return $ js ++ [JSApp (JSAccessor "main" (JSAccessor mainModuleName (JSVar "_ps"))) []]
71+ js' <- case mainModuleIdent of
72+ Just mmi@(ModuleName pns) -> do
73+ when ((mmi, Ident "main") `M.notMember` (names env)) $
74+ Left $ (show mmi) ++ ".main is undefined"
75+ return $ js ++ [JSApp (JSAccessor "main" (JSAccessor (moduleNameToJs mmi) (JSVar "_ps"))) []]
7576 _ -> return js
7677 return (prettyPrintJS [(wrapExportsContainer opts js')], exts, env)
7778 where
78− mainModuleIdent = ModuleName . splitProperNames <$> optionsMain opts
79− splitProperNames s = case dropWhile (== '.') s of
80− "" -> []
81− s' -> ProperName w : splitProperNames s''
82− where (w, s'') = break (== '.') s'
79+ mainModuleIdent = moduleNameFromString <$> optionsMain opts
src/Language/PureScript/Names.hs+8
@@ -70,6 +70,14 @@ data ModuleName = ModuleName [ProperName] deriving (Eq, Ord, Data, Typeable)
7070runModuleName :: ModuleName -> String
7171runModuleName (ModuleName pns) = intercalate "." (runProperName `map` pns)
7272
73+moduleNameFromString :: String -> ModuleName
74+moduleNameFromString = ModuleName . splitProperNames
75+ where
76+ splitProperNames s = case dropWhile (== '.') s of
77+ "" -> []
78+ s' -> ProperName w : splitProperNames s''
79+ where (w, s'') = break (== '.') s'
80+
7381instance Show ModuleName where
7482 show = runModuleName
7583