@@ -11,14 +11,15 @@ import Paths_idris
11import Util.System
11import Util.System
13import Control.Arrow
13import Control.Arrow
14+import Control.Monad (mapM)
14import Control.Applicative ((<$>), (<*>), pure)
15import Control.Applicative ((<$>), (<*>), pure)
15−import Control.Monad.RWS
16+import Control.Monad.RWS hiding (mapM)
16import Data.Char
17import Data.Char
17import Numeric
18import Numeric
18import Data.List
19import Data.List
19import Data.Maybe
20import Data.Maybe
20import Data.Word
21import Data.Word
21−import Data.Traversable
22+import Data.Traversable hiding (mapM)
22import System.IO
23import System.IO
23import System.Directory
24import System.Directory
@@ -358,17 +359,21 @@ codegenJS_all target definitions includes filename outputType = do
358 ("#!/usr/bin/env node\n", "-node")
359 ("#!/usr/bin/env node\n", "-node")
359 JavaScript ->
360 JavaScript ->
360 ("", "-browser")
361 ("", "-browser")
362+ included <- concat <$> getIncludes includes
361 path <- (++) <$> getDataDir <*> (pure "/jsrts/")
363 path <- (++) <$> getDataDir <*> (pure "/jsrts/")
362 idrRuntime <- readFile $ path ++ "Runtime-common.js"
364 idrRuntime <- readFile $ path ++ "Runtime-common.js"
363 tgtRuntime <- readFile $ concat [path, "Runtime", rt, ".js"]
365 tgtRuntime <- readFile $ concat [path, "Runtime", rt, ".js"]
364 jsbn <- readFile $ path ++ "jsbn/jsbn.js"
366 jsbn <- readFile $ path ++ "jsbn/jsbn.js"
365− let runtime = header ++ jsbn ++ idrRuntime ++ tgtRuntime
367+ let runtime = header ++ included ++ jsbn ++ idrRuntime ++ tgtRuntime
366 writeFile filename $ runtime ++ concat code ++ main ++ invokeMain
368 writeFile filename $ runtime ++ concat code ++ main ++ invokeMain
367 setPermissions filename (emptyPermissions { readable = True
369 setPermissions filename (emptyPermissions { readable = True
368 , executable = target == Node
370 , executable = target == Node
369 , writable = True
371 , writable = True
374+ getIncludes :: [FilePath] -> IO [String]
375+ getIncludes = mapM readFile
372 main :: String
377 main :: String
373 main = compileJS $
378 main = compileJS $
374 JSAlloc "main" $ Just $ JSFunction [] (
379 JSAlloc "main" $ Just $ JSFunction [] (