on master help sign in
Fix GHCJS build and warnings
commitbfb639eef6e91d6fedffdf8132081ba56a275998 authorHamish Mackenzie <Hamish.K.Mackenzie@googlemail.com> dateSat 12 Nov 2016, 22:50 (10 years ago) parentb8db013
10 files changed+33−24
jsaddle-warp/jsaddle-warp.cabal+1−1 jsaddle-warp/src/Language/Javascript/JSaddle/Warp.hs+4−2 jsaddle/jsaddle.cabal+2−2 jsaddle/src/Language/Javascript/JSaddle/Evaluate.hs+1−2 jsaddle/src/Language/Javascript/JSaddle/Monad.hs+5 jsaddle/src/Language/Javascript/JSaddle/Object.hs+9−6 jsaddle/src/Language/Javascript/JSaddle/Run.hs+2−2 jsaddle/src/Language/Javascript/JSaddle/String.hs+3−2 jsaddle/src/Language/Javascript/JSaddle/Types.hs+1−3 jsaddle/src/Language/Javascript/JSaddle/Value.hs+5−4
jsaddle-warp/jsaddle-warp.cabal+1−1
@@ -1,5 +1,5 @@
11name: jsaddle-warp
2−version: 0.6.0.0
2+version: 0.6.0.1
33cabal-version: >=1.10
44build-type: Simple
55license: MIT
jsaddle-warp/src/Language/Javascript/JSaddle/Warp.hs+4−2
@@ -18,25 +18,27 @@ module Language.Javascript.JSaddle.Warp (
1818 run
1919#ifndef ghcjs_HOST_OS
2020 , jsaddleOr
21+ , jsaddleApp
2122#endif
2223) where
2324
24−import Language.Javascript.JSaddle.Types (JSM)
2525#ifndef ghcjs_HOST_OS
2626import Network.Wai.Handler.Warp
2727 (defaultSettings, setTimeout, setPort, runSettings)
2828import Network.WebSockets (defaultConnectionOptions)
2929
30+import Language.Javascript.JSaddle.Types (JSM)
3031import Language.Javascript.JSaddle.Run (syncPoint)
3132import Language.Javascript.JSaddle.WebSockets (jsaddleOr, jsaddleApp)
3233#endif
3334
3435-- | Run the given 'JSM' action as the main entry point. Either directly
3536-- in GHCJS or as a Warp server on the given port on GHC.
36−run :: Int -> JSM () -> IO ()
3737#ifdef ghcjs_HOST_OS
38+run :: Int -> IO () -> IO ()
3839run _port = id
3940#else
41+run :: Int -> JSM () -> IO ()
4042run port f =
4143 runSettings (setPort port (setTimeout 3600 defaultSettings)) $
4244 jsaddleOr defaultConnectionOptions (f >> syncPoint) jsaddleApp
jsaddle/jsaddle.cabal+2−2
@@ -1,5 +1,5 @@
11name: jsaddle
2−version: 0.6.0.0
2+version: 0.6.0.1
33cabal-version: >=1.10
44build-type: Simple
55license: MIT
@@ -27,7 +27,6 @@ library
2727 else
2828 build-depends:
2929 aeson >=0.8.0.2 && <1.1,
30− bytestring >=0.10.6.0 && <0.11,
3130 containers >=0.5.6.2 && <0.6,
3231 filepath >=1.4.0.0 && <1.5,
3332 http-types >=0.8.6 && <0.10,
@@ -52,6 +51,7 @@ library
5251 Language.Javascript.JSaddle.Types
5352 build-depends:
5453 base <5,
54+ bytestring >=0.10.6.0 && <0.11,
5555 lens >=3.8.5 && <4.16,
5656 primitive >=0.6.1.0 && <0.7,
5757 template-haskell -any,
jsaddle/src/Language/Javascript/JSaddle/Evaluate.hs+1−2
@@ -2,6 +2,7 @@
22{-# LANGUAGE FlexibleInstances #-}
33#ifdef ghcjs_HOST_OS
44{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
5+{-# OPTIONS_GHC -Wno-dodgy-exports -Wno-dodgy-imports #-}
56#endif
67-----------------------------------------------------------------------------
78--
@@ -23,8 +24,6 @@ module Language.Javascript.JSaddle.Evaluate (
2324import Language.Javascript.JSaddle.Types (JSVal)
2425#ifdef ghcjs_HOST_OS
2526import Control.Monad.IO.Class (MonadIO(..))
26−import GHCJS.Types (nullRef)
27−import GHCJS.Marshal.Pure (pFromJSVal)
2827import Language.Javascript.JSaddle.Types (JSString)
2928#else
3029import Language.Javascript.JSaddle.Native
jsaddle/src/Language/Javascript/JSaddle/Monad.hs+5
@@ -1,5 +1,8 @@
11{-# LANGUAGE CPP #-}
22{-# LANGUAGE PatternSynonyms #-}
3+#ifdef ghcjs_HOST_OS
4+{-# OPTIONS_GHC -Wno-dodgy-exports -Wno-dodgy-imports #-}
5+#endif
36-----------------------------------------------------------------------------
47--
58-- Module : Language.Javascript.JSaddle.Monad
@@ -36,7 +39,9 @@ module Language.Javascript.JSaddle.Monad (
3639) where
3740
3841import Prelude hiding (read)
42+#ifndef ghcjs_HOST_OS
3943import Control.Monad.Trans.Reader (runReaderT, ask, ReaderT(..))
44+#endif
4045import Control.Monad.IO.Class (MonadIO(..))
4146import qualified Control.Exception as E (Exception, catch, bracket)
4247import Language.Javascript.JSaddle.Types (JSM(..), MonadJSM, liftJSM, JSContextRef(..))
jsaddle/src/Language/Javascript/JSaddle/Object.hs+9−6
@@ -6,6 +6,7 @@
66#ifdef ghcjs_HOST_OS
77{-# LANGUAGE ForeignFunctionInterface #-}
88{-# LANGUAGE JavaScriptFFI #-}
9+{-# OPTIONS_GHC -Wno-dodgy-exports -Wno-dodgy-imports #-}
910#endif
1011{-# OPTIONS_GHC -fno-warn-orphans #-}
1112-----------------------------------------------------------------------------
@@ -91,11 +92,7 @@ module Language.Javascript.JSaddle.Object (
9192
9293import Control.Applicative
9394import Prelude hiding ((!!))
94−import Language.Javascript.JSaddle.Types
95− (JSString, Object(..),
96− JSVal(..), JSCallAsFunction, JSContextRef(..))
9795#ifdef ghcjs_HOST_OS
98−import Control.Monad.Trans.Reader (runReaderT)
9996import GHCJS.Types (nullRef, jsval)
10097import GHCJS.Foreign.Callback
10198 (releaseCallback, syncCallback2, OnBlocked(..), Callback)
@@ -104,19 +101,25 @@ import JavaScript.Array (JSArray, MutableJSArray)
104101import qualified JavaScript.Array as Array (toListIO, fromListIO)
105102import JavaScript.Array.Internal (SomeJSArray(..))
106103import qualified JavaScript.Object as Object (create)
107−import Control.Monad (liftM)
108104import Data.Coerce (coerce)
105+import Language.Javascript.JSaddle.Monad (JSM)
106+import Language.Javascript.JSaddle.Types
107+ (JSString, Object(..),
108+ JSVal(..), JSCallAsFunction)
109109#else
110110import Language.Javascript.JSaddle.Native
111111 (wrapJSString, withJSVals, withObject)
112112import Language.Javascript.JSaddle.Run
113113 (Command(..), AsyncCommand(..), Result(..), sendCommand, sendLazyCommand)
114+import Language.Javascript.JSaddle.Monad (askJSM, JSM)
115+import Language.Javascript.JSaddle.Types
116+ (JSString, Object(..),
117+ JSVal(..), JSCallAsFunction, JSContextRef(..))
114118#endif
115119import Language.Javascript.JSaddle.Value (valToObject)
116120import Language.Javascript.JSaddle.Classes
117121 (ToJSVal(..), ToJSString(..), MakeObject(..))
118122import Language.Javascript.JSaddle.Arguments (MakeArgs(..))
119−import Language.Javascript.JSaddle.Monad (askJSM, JSM)
120123import Control.Monad.IO.Class (MonadIO(..))
121124import Language.Javascript.JSaddle.Properties
122125import Control.Lens (IndexPreservingGetter, to)
jsaddle/src/Language/Javascript/JSaddle/Run.hs+2−2
@@ -15,13 +15,13 @@
1515
1616module Language.Javascript.JSaddle.Run (
1717 -- * Running JSM
18− runJavaScript
19− , syncPoint
18+ syncPoint
2019 , syncAfter
2120 , waitForAnimationFrame
2221 , nextAnimationFrame
2322#ifndef ghcjs_HOST_OS
2423 -- * Functions used to implement JSaddle using JSON messaging
24+ , runJavaScript
2525 , AsyncCommand(..)
2626 , Command(..)
2727 , Result(..)
jsaddle/src/Language/Javascript/JSaddle/String.hs+3−2
@@ -1,6 +1,9 @@
11{-# LANGUAGE CPP #-}
22{-# LANGUAGE FlexibleInstances #-}
33{-# LANGUAGE TypeSynonymInstances #-}
4+#ifdef ghcjs_HOST_OS
5+{-# OPTIONS_GHC -Wno-dodgy-imports #-}
6+#endif
47-----------------------------------------------------------------------------
58--
69-- Module : Language.Javascript.JSaddle.String
@@ -26,8 +29,6 @@ import Data.Text (Text)
2629import Language.Javascript.JSaddle.Types (JSString(..))
2730#ifdef ghcjs_HOST_OS
2831import Data.JSString.Text (textFromJSString, textToJSString)
29−import GHCJS.Marshal.Internal (PFromJSVal(..))
30−import GHCJS.Types (nullRef)
3132#endif
3233import Language.Javascript.JSaddle.Classes (ToJSString(..))
3334
jsaddle/src/Language/Javascript/JSaddle/Types.hs+1−3
@@ -1,6 +1,7 @@
11{-# LANGUAGE CPP #-}
22#ifdef ghcjs_HOST_OS
33{-# LANGUAGE ConstraintKinds #-}
4+{-# OPTIONS_GHC -Wno-dodgy-exports #-}
45#else
56{-# LANGUAGE TypeFamilies #-}
67{-# LANGUAGE UndecidableInstances #-}
@@ -55,7 +56,6 @@ import Control.Monad.IO.Class (MonadIO(..))
5556import GHCJS.Types
5657import JavaScript.Object.Internal (Object(..))
5758import JavaScript.Array (MutableJSArray)
58−import Data.Word (Word(..))
5959import GHCJS.Nullable (Nullable(..))
6060#else
6161import Control.Monad.Trans.Reader (ReaderT(..))
@@ -101,8 +101,6 @@ data JSContextRef = JSContextRef {
101101-- > runJSM jsmFunction javaScriptContext
102102#ifdef ghcjs_HOST_OS
103103type JSM = IO
104−runJSM :: JSM a -> JSContextRef -> IO a
105−runJSM f = const f
106104#else
107105newtype JSM a = JSM { unJSM :: ReaderT JSContextRef IO a }
108106 deriving (Functor, Applicative, Monad, MonadIO, MonadFix)
jsaddle/src/Language/Javascript/JSaddle/Value.hs+5−4
@@ -5,6 +5,7 @@
55{-# LANGUAGE LambdaCase #-}
66#ifdef ghcjs_HOST_OS
77{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
8+{-# OPTIONS_GHC -Wno-dodgy-exports -Wno-dodgy-imports #-}
89#endif
910{-# OPTIONS_GHC -fno-warn-orphans #-}
1011-----------------------------------------------------------------------------
@@ -74,14 +75,14 @@ import Language.Javascript.JSaddle.Types
7475 (Object(..), JSString(..), JSVal(..))
7576#ifdef ghcjs_HOST_OS
7677import Control.Monad.IO.Class (MonadIO(..))
77−import Language.Javascript.JSaddle.Types
78− (MutableJSArray)
79−import GHCJS.Types (JSVal(..), isNull, isUndefined)
78+import GHCJS.Types (isNull, isUndefined)
8079import GHCJS.Foreign (toJSBool, isTruthy, jsNull, jsUndefined)
8180import qualified GHCJS.Marshal as GHCJS (toJSVal)
8281import GHCJS.Marshal.Pure (pToJSVal)
8382import Data.JSString.Text (textToJSString)
83+import qualified Data.Text as T (pack)
8484#else
85+import qualified Data.Text as T (pack, unpack)
8586import Language.Javascript.JSaddle.Native
8687 (wrapJSString, withJSVal, withObject, withJSString,
8788 withToJSVal)
@@ -91,7 +92,6 @@ import Language.Javascript.JSaddle.Run
9192#endif
9293import Language.Javascript.JSaddle.Monad (JSM)
9394import Data.Text (Text)
94−import qualified Data.Text as T (pack, unpack)
9595import Language.Javascript.JSaddle.Classes
9696 (MakeObject(..), ToJSString(..), ToJSVal(..))
9797import Language.Javascript.JSaddle.String (strToText, textToStr)
@@ -550,6 +550,7 @@ deRefVal value = do
550550 3 -> ValNumber <$> valToNumber valref
551551 4 -> ValString <$> valToText valref
552552 5 -> ValObject <$> valToObject valref
553+ _ -> error "Unexpected result dereferencing JSaddle value"
553554foreign import javascript unsafe "$r = ($1 === undefined)?0:\
554555 ($1===null)?1:\
555556 (typeof $1===\"boolean\")?2:\