@@ -8,7 +8,6 @@ module Type.ExtraChecks (mainType, occurs, portTypes) where
9import Control.Applicative ((<$>),(<*>))
9import Control.Applicative ((<$>),(<*>))
10import Control.Monad.State
10import Control.Monad.State
11−import qualified Data.List as List
12import qualified Data.Map as Map
11import qualified Data.Map as Map
13import qualified Data.Traversable as Traverse
12import qualified Data.Traversable as Traverse
14import qualified Data.UnionFind.IO as UF
13import qualified Data.UnionFind.IO as UF
@@ -56,9 +55,13 @@ portTypes rules expr =
56 isValid isTopLevel seenFunc seenSignal direction name tipe =
55 isValid isTopLevel seenFunc seenSignal direction name tipe =
57 case tipe of
56 case tipe of
58 ST.Data ctor ts
57 ST.Data ctor ts
59− | isJs ctor || isElm ctor -> mapM_ valid ts
58+ | validConstructor -> mapM_ valid ts
60 | ctor == "Signal.Signal" -> handleSignal ts
59 | ctor == "Signal.Signal" -> handleSignal ts
61 | otherwise -> err' True "an unsupported type"
60 | otherwise -> err' True "an unsupported type"
63+ ctor `elem` ["Int","Float","String","Bool","Maybe.Maybe","_List"]
63 ST.Var _ -> err "free type variables"
66 ST.Var _ -> err "free type variables"
@@ -80,14 +83,6 @@ portTypes rules expr =
80 isValid' = isValid False
83 isValid' = isValid False
81 valid = isValid' seenFunc seenSignal direction name
84 valid = isValid' seenFunc seenSignal direction name
84− List.isPrefixOf "JavaScript." ctor
85− && length (filter (=='.') ctor) == 1
88− ctor `elem` ["Int","Float","String","Bool","Maybe.Maybe","_List"]
91 handleSignal ts
86 handleSignal ts
92 | seenFunc = err "functions that involve signals"
87 | seenFunc = err "functions that involve signals"
93 | seenSignal = err "signals-of-signals"
88 | seenSignal = err "signals-of-signals"