@@ -108,22 +108,25 @@ makeExportDecls :: Map Name LDecl -> ExportIFace -> [Text]
108108makeExportDecls defs (Export _ _ e) =
109109 concatMap makeExport e
110110 where
111− uncurryF name argTy (Just args) =
112− if length argTy == length args then name
111+ uncurryF name argTy (Just args) retTy =
112+ if length argTy == length args then
113+ case (retTy, length args) of
114+ (FIO _, 0) -> T.concat ["function(){return ", name, "()()}"]
115+ _ -> name
113116 else T.concat [ "function(){ return "
114117 , name
115118 , ".apply(this, Array.prototype.slice.call(arguments, 0,", T.pack $ show $ length args,"))"
116119 , T.concat $ map (\x -> T.concat ["(arguments[", T.pack $ show x , "])"]) [length args .. (length argTy - 1)]
117120 , "}"
118121 ]
119− uncurryF name argTy Nothing = name
122+ uncurryF name argTy Nothing retTy = name
120123
121124 makeExport (ExportData _) =
122125 []
123126 makeExport (ExportFun name (FStr exportname) retTy argTy) =
124127 [T.concat [ T.pack $ exportname
125128 , ": "
126− , uncurryF (jsName name) argTy (getArgList' name defs)
129+ , uncurryF (jsName name) argTy (getArgList' name defs) retTy
127130 ]
128131 ]
129132