@@ -35,11 +35,17 @@ import Language.PureScript.Environment
3535--
3636moduleToPs :: Module -> Environment -> String
3737moduleToPs (Module _ _ Nothing) _ = error "Module exports were not elaborated in moduleToPs"
38−moduleToPs (Module moduleName _ (Just exts)) env = intercalate "\n" . execWriter $ do
38+moduleToPs (Module moduleName ds (Just exts)) env = intercalate "\n" . execWriter $ do
3939 tell ["module " ++ runModuleName moduleName ++ " where"]
40+ mapM_ fixityToPs ds
4041 mapM_ exportToPs exts
4142 where
4243
44+ fixityToPs :: Declaration -> Writer [String] ()
45+ fixityToPs (FixityDeclaration (Fixity assoc prec) ident) =
46+ tell [ unwords [ show assoc, show prec, ident ] ]
47+ fixityToPs _ = return ()
48+
4349 exportToPs :: DeclarationRef -> Writer [String] ()
4450 exportToPs (TypeRef pn dctors) = do
4551 case Qualified (Just moduleName) pn `M.lookup` types env of
@@ -62,15 +68,15 @@ moduleToPs (Module moduleName _ (Just exts)) env = intercalate "\n" . execWriter
6268 exportToPs (ValueRef ident) =
6369 case (moduleName, ident) `M.lookup` names env of
6470 Nothing -> error $ show ident ++ " has no type in exportToPs"
65− Just (ty, nameKind) | nameKind == Value || nameKind == Extern ForeignImport ->
71+ Just (ty, nameKind) | nameKind == Value || nameKind == Extern ForeignImport || nameKind == Extern InlineJavascript ->
6672 tell ["foreign import " ++ show ident ++ " :: " ++ prettyPrintType ty]
6773 _ -> return ()
6874 exportToPs (TypeClassRef className) =
6975 case Qualified (Just moduleName) className `M.lookup` typeClasses env of
7076 Nothing -> error $ show className ++ " has no type class definition in exportToPs"
71− Just (args, ds) -> do
77+ Just (args, members) -> do
7278 tell ["class " ++ show className ++ " " ++ unwords args ++ " where"]
73− forM_ (filter (isValueExported . fst) ds) $ \(member ,ty) ->
79+ forM_ (filter (isValueExported . fst) members) $ \(member ,ty) ->
7480 tell [ " " ++ show member ++ " :: " ++ prettyPrintType ty ]
7581 exportToPs (TypeInstanceRef ident) = do
7682 let TypeClassDictionaryInScope { tcdClassName = className, tcdInstanceTypes = tys, tcdDependencies = deps} =