git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Preserve exports list in externs files
commit3de35a837e4e01bea00187e626e53967a2b453b5 authorGary Burgess <gary.burgess@gmail.com> dateSat 20 Jun 2015, 00:02 (11 years ago) parent39347bf
1 file changed+12−1
src/Language/PureScript/CodeGen/Externs.hs+12−1
src/Language/PureScript/CodeGen/Externs.hs+12−1
@@ -38,11 +38,22 @@ import Language.PureScript.Types
3838moduleToPs :: Module -> Environment -> String
3939moduleToPs (Module _ _ _ Nothing) _ = error "Module exports were not elaborated in moduleToPs"
4040moduleToPs (Module _ moduleName ds (Just exts)) env = intercalate "\n" . execWriter $ do
41− tell [ "module " ++ runModuleName moduleName ++ " where"]
41+ tell [ "module " ++ runModuleName moduleName ++ " (" ++ listExports exts ++ ") where"]
4242 mapM_ declToPs ds
4343 mapM_ exportToPs exts
4444 where
4545
46+ listExports :: [DeclarationRef] -> String
47+ listExports = intercalate ", " . mapMaybe listExport
48+
49+ listExport :: DeclarationRef -> Maybe String
50+ listExport (PositionedDeclarationRef _ _ d) = listExport d
51+ listExport (TypeRef name Nothing) = Just $ show name ++ "()"
52+ listExport (TypeRef name (Just dctors)) = Just $ show name ++ "(" ++ intercalate ", " (map show dctors) ++ ")"
53+ listExport (ValueRef name) = Just $ show name
54+ listExport (TypeClassRef name) = Just $ show name
55+ listExport _ = Nothing
56+
4657 declToPs :: Declaration -> Writer [String] ()
4758 declToPs (ImportDeclaration mn _ _) = tell ["import " ++ show mn ++ " ()"]
4859 declToPs (FixityDeclaration (Fixity assoc prec) op) =