@@ -38,11 +38,22 @@ import Language.PureScript.Types
38moduleToPs :: Module -> Environment -> String
38moduleToPs :: Module -> Environment -> String
39moduleToPs (Module _ _ _ Nothing) _ = error "Module exports were not elaborated in moduleToPs"
39moduleToPs (Module _ _ _ Nothing) _ = error "Module exports were not elaborated in moduleToPs"
40moduleToPs (Module _ moduleName ds (Just exts)) env = intercalate "\n" . execWriter $ do
40moduleToPs (Module _ moduleName ds (Just exts)) env = intercalate "\n" . execWriter $ do
41− tell [ "module " ++ runModuleName moduleName ++ " where"]
41+ tell [ "module " ++ runModuleName moduleName ++ " (" ++ listExports exts ++ ") where"]
42 mapM_ declToPs ds
42 mapM_ declToPs ds
43 mapM_ exportToPs exts
43 mapM_ exportToPs exts
46+ listExports :: [DeclarationRef] -> String
47+ listExports = intercalate ", " . mapMaybe listExport
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
46 declToPs :: Declaration -> Writer [String] ()
57 declToPs :: Declaration -> Writer [String] ()
47 declToPs (ImportDeclaration mn _ _) = tell ["import " ++ show mn ++ " ()"]
58 declToPs (ImportDeclaration mn _ _) = tell ["import " ++ show mn ++ " ()"]
48 declToPs (FixityDeclaration (Fixity assoc prec) op) =
59 declToPs (FixityDeclaration (Fixity assoc prec) op) =