@@ -27,12 +27,14 @@ module Language.PureScript.TypeChecker.Types
28import Prelude.Compat
28import Prelude.Compat
30+import Control.Arrow (second)
30import Control.Monad
31import Control.Monad
31import Control.Monad.Error.Class (MonadError(..))
32import Control.Monad.Error.Class (MonadError(..))
32import Control.Monad.State.Class (MonadState(..), gets)
33import Control.Monad.State.Class (MonadState(..), gets)
33import Control.Monad.Supply.Class (MonadSupply)
34import Control.Monad.Supply.Class (MonadSupply)
34import Control.Monad.Writer.Class (MonadWriter(..))
35import Control.Monad.Writer.Class (MonadWriter(..))
37+import Data.Bifunctor (bimap)
36import Data.Either (lefts, rights)
38import Data.Either (lefts, rights)
37import Data.List (transpose, nub, (\\), partition, delete)
39import Data.List (transpose, nub, (\\), partition, delete)
38import Data.Maybe (fromMaybe)
40import Data.Maybe (fromMaybe)
@@ -199,6 +201,10 @@ typeForBindingGroupElement (ident, val) dict untypedDict = do
199-- | Check if a value contains a type annotation
201-- | Check if a value contains a type annotation
200isTyped :: (Ident, Expr) -> Either (Ident, Expr) (Ident, (Expr, Type, Bool))
202isTyped :: (Ident, Expr) -> Either (Ident, Expr) (Ident, (Expr, Type, Bool))
201isTyped (name, TypedValue checkType value ty) = Right (name, (value, ty, checkType))
203isTyped (name, TypedValue checkType value ty) = Right (name, (value, ty, checkType))
204+isTyped (name, PositionedValue pos c value) =
205+ bimap (second (PositionedValue pos c))
206+ (second (\(e, t, b) -> (PositionedValue pos c e, t, b)))
207+ (isTyped (name, value))
202isTyped (name, value) = Left (name, value)
208isTyped (name, value) = Left (name, value)