git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
NoImplicitPrelude, enable some global extensions (#2094)
fac68e5Gary Burgess
psc-ide-server/Main.hs−1
@@ -12,7 +12,6 @@
12-- The server accepting commands for psc-ide
12-- The server accepting commands for psc-ide
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−{-# LANGUAGE ConstraintKinds #-}
16{-# LANGUAGE FlexibleContexts #-}
15{-# LANGUAGE FlexibleContexts #-}
17{-# LANGUAGE MultiParamTypeClasses #-}
16{-# LANGUAGE MultiParamTypeClasses #-}
18{-# LANGUAGE OverloadedStrings #-}
17{-# LANGUAGE OverloadedStrings #-}
psci/PSCi/Directive.hs−13
@@ -1,18 +1,6 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Directive
4−-- Copyright :
5−-- License : MIT
6−--
7−-- Maintainer :
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- Directives for PSCI.
2-- Directives for PSCI.
13--
3--
14−-----------------------------------------------------------------------------
15−
16module PSCi.Directive where
4module PSCi.Directive where
17
5
18import Prelude ()
6import Prelude ()
@@ -116,4 +104,3 @@ help =
116 , (Show, "import", "Show all imported modules")
104 , (Show, "import", "Show all imported modules")
117 , (Show, "loaded", "Show all loaded modules")
105 , (Show, "loaded", "Show all loaded modules")
118 ]
106 ]
119−
psci/PSCi/IO.hs−14
@@ -1,17 +1,3 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : IO
4−-- Copyright : (c) 2013-14 Phil Freeman, (c) 2014 Gary Burgess, and other contributors
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11−-- |
12−--
13−-----------------------------------------------------------------------------
14−
15module PSCi.IO where
1module PSCi.IO where
16
2
17import Prelude ()
3import Prelude ()
psci/PSCi/Parser.hs−12
@@ -1,18 +1,6 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Parser
4−-- Copyright : (c) Phil Freeman 2014
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- Parser for PSCI.
2-- Parser for PSCI.
13--
3--
14−-----------------------------------------------------------------------------
15−
16module PSCi.Parser
4module PSCi.Parser
17 ( parseCommand
5 ( parseCommand
18 ) where
6 ) where
psci/PSCi/Types.hs−12
@@ -1,18 +1,6 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Types
4−-- Copyright : (c) Phil Freeman 2014
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- Type declarations and associated basic functions for PSCI.
2-- Type declarations and associated basic functions for PSCI.
13--
3--
14−-----------------------------------------------------------------------------
15−
16module PSCi.Types where
4module PSCi.Types where
17
5
18import Prelude ()
6import Prelude ()
purescript.cabal+16−1
@@ -264,7 +264,22 @@ library
264
264
265 System.IO.UTF8
265 System.IO.UTF8
266
266
267+ extensions: ConstraintKinds
267− extensions: DataKinds
268+ DataKinds
269+ DeriveFunctor
270+ EmptyDataDecls
271+ FlexibleContexts
272+ KindSignatures
273+ LambdaCase
274+ MultiParamTypeClasses
275+ NoImplicitPrelude
276+ PatternGuards
277+ PatternSynonyms
278+ RankNTypes
279+ RecordWildCards
280+ ScopedTypeVariables
281+ TupleSections
282+ ViewPatterns
268 exposed: True
283 exposed: True
269 buildable: True
284 buildable: True
270 hs-source-dirs: src
285 hs-source-dirs: src
src/Control/Monad/Logger.hs+7−20
@@ -1,33 +1,20 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Control.Monad.Logger
4−-- Author : Phil Freeman
5−-- License : MIT (http://opensource.org/licenses/MIT)
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11−-- | A replacement for WriterT IO which uses mutable references.
12−--
13−-----------------------------------------------------------------------------
14−
15{-# LANGUAGE FlexibleInstances #-}
1{-# LANGUAGE FlexibleInstances #-}
16−{-# LANGUAGE MultiParamTypeClasses #-}
17{-# LANGUAGE TypeFamilies #-}
2{-# LANGUAGE TypeFamilies #-}
18
3
4+-- |
5+-- A replacement for WriterT IO which uses mutable references.
6+--
19module Control.Monad.Logger where
7module Control.Monad.Logger where
20
8
21−import Prelude ()
22import Prelude.Compat
9import Prelude.Compat
23
10
24−import Data.IORef
25−
26import Control.Monad (ap)
11import Control.Monad (ap)
27−import Control.Monad.IO.Class
28−import Control.Monad.Writer.Class
29import Control.Monad.Base (MonadBase(..))
12import Control.Monad.Base (MonadBase(..))
13+import Control.Monad.IO.Class
30import Control.Monad.Trans.Control (MonadBaseControl(..))
14import Control.Monad.Trans.Control (MonadBaseControl(..))
15+import Control.Monad.Writer.Class
16+
17+import Data.IORef
31
18
32-- | A replacement for WriterT IO which uses mutable references.
19-- | A replacement for WriterT IO which uses mutable references.
33newtype Logger w a = Logger { runLogger :: IORef w -> IO a }
20newtype Logger w a = Logger { runLogger :: IORef w -> IO a }
src/Control/Monad/Supply.hs+5−18
@@ -1,32 +1,19 @@
1−-----------------------------------------------------------------------------
1+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
2−--
2+
3−-- Module : Control.Monad.Supply
4−-- Copyright : (c) Phil Freeman 2014
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
3-- |
12-- Fresh variable supply
4-- Fresh variable supply
13--
5--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE GeneralizedNewtypeDeriving #-}
17−
18module Control.Monad.Supply where
6module Control.Monad.Supply where
19
7
20−import Prelude ()
21import Prelude.Compat
8import Prelude.Compat
22
9
23−import Data.Functor.Identity
24−
25−import Control.Monad.State
26import Control.Monad.Error.Class (MonadError(..))
10import Control.Monad.Error.Class (MonadError(..))
27import Control.Monad.Reader
11import Control.Monad.Reader
12+import Control.Monad.State
28import Control.Monad.Writer
13import Control.Monad.Writer
29
14
15+import Data.Functor.Identity
16+
30newtype SupplyT m a = SupplyT { unSupplyT :: StateT Integer m a }
17newtype SupplyT m a = SupplyT { unSupplyT :: StateT Integer m a }
31 deriving (Functor, Applicative, Monad, MonadTrans, MonadError e, MonadWriter w, MonadReader r)
18 deriving (Functor, Applicative, Monad, MonadTrans, MonadError e, MonadWriter w, MonadReader r)
32
19
src/Control/Monad/Supply/Class.hs+6−6
@@ -1,24 +1,24 @@
1−{-# LANGUAGE MultiParamTypeClasses #-}
2−
3-- |
1-- |
4-- A class for monads supporting a supply of fresh names
2-- A class for monads supporting a supply of fresh names
5--
3--
6module Control.Monad.Supply.Class where
4module Control.Monad.Supply.Class where
7
5
6+import Prelude.Compat
7+
8import Control.Monad.Supply
8import Control.Monad.Supply
9import Control.Monad.State
9import Control.Monad.State
10
10
11−class (Monad m) => MonadSupply m where
11+class Monad m => MonadSupply m where
12 fresh :: m Integer
12 fresh :: m Integer
13
13
14−instance (Monad m) => MonadSupply (SupplyT m) where
14+instance Monad m => MonadSupply (SupplyT m) where
15 fresh = SupplyT $ do
15 fresh = SupplyT $ do
16 n <- get
16 n <- get
17 put (n + 1)
17 put (n + 1)
18 return n
18 return n
19
19
20−instance (MonadSupply m) => MonadSupply (StateT s m) where
20+instance MonadSupply m => MonadSupply (StateT s m) where
21 fresh = lift fresh
21 fresh = lift fresh
22
22
23−freshName :: (MonadSupply m) => m String
23+freshName :: MonadSupply m => m String
24freshName = fmap (('$' :) . show) fresh
24freshName = fmap (('$' :) . show) fresh
src/Language/PureScript.hs+4−17
@@ -1,31 +1,19 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript
4−-- Copyright : (c) 2013-14 Phil Freeman, (c) 2014 Gary Burgess, and other contributors
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- The main compiler module
2-- The main compiler module
13--
3--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE FlexibleContexts #-}
17−{-# LANGUAGE ScopedTypeVariables #-}
18−
19module Language.PureScript
4module Language.PureScript
20 ( module P
5 ( module P
21 , version
6 , version
22 ) where
7 ) where
23
8
9+
10+import Control.Monad.Supply as P
11+
24import Data.Version (Version)
12import Data.Version (Version)
25
13
26import Language.PureScript.AST as P
14import Language.PureScript.AST as P
27−import Language.PureScript.Crash as P
28import Language.PureScript.Comments as P
15import Language.PureScript.Comments as P
16+import Language.PureScript.Crash as P
29import Language.PureScript.Environment as P
17import Language.PureScript.Environment as P
30import Language.PureScript.Errors as P hiding (indent)
18import Language.PureScript.Errors as P hiding (indent)
31import Language.PureScript.Kinds as P
19import Language.PureScript.Kinds as P
@@ -38,7 +26,6 @@ import Language.PureScript.Parser as P
38import Language.PureScript.Pretty as P
26import Language.PureScript.Pretty as P
39import Language.PureScript.Renamer as P
27import Language.PureScript.Renamer as P
40import Language.PureScript.Sugar as P
28import Language.PureScript.Sugar as P
41−import Control.Monad.Supply as P
42import Language.PureScript.TypeChecker as P
29import Language.PureScript.TypeChecker as P
43import Language.PureScript.Types as P
30import Language.PureScript.Types as P
44
31
src/Language/PureScript/AST/Binders.hs+2
@@ -3,6 +3,8 @@
3--
3--
4module Language.PureScript.AST.Binders where
4module Language.PureScript.AST.Binders where
5
5
6+import Prelude.Compat
7+
6import Language.PureScript.AST.SourcePos
8import Language.PureScript.AST.SourcePos
7import Language.PureScript.AST.Literals
9import Language.PureScript.AST.Literals
8import Language.PureScript.Names
10import Language.PureScript.Names
src/Language/PureScript/AST/Declarations.hs+2−6
@@ -1,23 +1,19 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
2{-# LANGUAGE TemplateHaskell #-}
1{-# LANGUAGE TemplateHaskell #-}
3−{-# LANGUAGE LambdaCase #-}
4
2
5-- |
3-- |
6-- Data types for modules and declarations
4-- Data types for modules and declarations
7--
5--
8module Language.PureScript.AST.Declarations where
6module Language.PureScript.AST.Declarations where
9
7
10−import Prelude ()
11import Prelude.Compat
8import Prelude.Compat
12
9
10+import Control.Monad.Identity
11+
13import Data.Aeson.TH
12import Data.Aeson.TH
14import Data.List (nub, (\\))
13import Data.List (nub, (\\))
15import Data.Maybe (mapMaybe)
14import Data.Maybe (mapMaybe)
16−
17import qualified Data.Map as M
15import qualified Data.Map as M
18
16
19−import Control.Monad.Identity
20−
21import Language.PureScript.AST.Binders
17import Language.PureScript.AST.Binders
22import Language.PureScript.AST.Literals
18import Language.PureScript.AST.Literals
23import Language.PureScript.AST.Operators
19import Language.PureScript.AST.Operators
src/Language/PureScript/AST/Exported.hs+3
@@ -3,7 +3,10 @@ module Language.PureScript.AST.Exported
3 , isExported
3 , isExported
4 ) where
4 ) where
5
5
6+import Prelude.Compat
7+
6import Control.Category ((>>>))
8import Control.Category ((>>>))
9+
7import Data.Maybe (mapMaybe)
10import Data.Maybe (mapMaybe)
8
11
9import Language.PureScript.AST.Declarations
12import Language.PureScript.AST.Declarations
src/Language/PureScript/AST/Literals.hs+2−2
@@ -1,10 +1,10 @@
1−{-# LANGUAGE DeriveFunctor #-}
2−
3-- |
1-- |
4-- The core functional representation for literal values.
2-- The core functional representation for literal values.
5--
3--
6module Language.PureScript.AST.Literals where
4module Language.PureScript.AST.Literals where
7
5
6+import Prelude.Compat
7+
8-- |
8-- |
9-- Data type for literal values. Parameterised so it can be used for Exprs and
9-- Data type for literal values. Parameterised so it can be used for Exprs and
10-- Binders.
10-- Binders.
src/Language/PureScript/AST/Operators.hs+2
@@ -5,6 +5,8 @@
5--
5--
6module Language.PureScript.AST.Operators where
6module Language.PureScript.AST.Operators where
7
7
8+import Prelude.Compat
9+
8import Data.Aeson ((.=))
10import Data.Aeson ((.=))
9import qualified Data.Aeson as A
11import qualified Data.Aeson as A
10
12
src/Language/PureScript/AST/SourcePos.hs−3
@@ -1,5 +1,3 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
2−{-# LANGUAGE RecordWildCards #-}
3{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
4
2
5-- |
3-- |
@@ -7,7 +5,6 @@
7--
5--
8module Language.PureScript.AST.SourcePos where
6module Language.PureScript.AST.SourcePos where
9
7
10−import Prelude ()
11import Prelude.Compat
8import Prelude.Compat
12
9
13import Data.Aeson ((.=), (.:))
10import Data.Aeson ((.=), (.:))
src/Language/PureScript/AST/Traversals.hs+5−8
@@ -1,21 +1,18 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
2−
3-- |
1-- |
4-- AST traversal helpers
2-- AST traversal helpers
5--
3--
6module Language.PureScript.AST.Traversals where
4module Language.PureScript.AST.Traversals where
7
5
8−import Prelude ()
9import Prelude.Compat
6import Prelude.Compat
10
7
11−import Data.Maybe (mapMaybe)
12−import Data.List (mapAccumL)
13−import Data.Foldable (fold)
14−import qualified Data.Set as S
15−
16import Control.Monad
8import Control.Monad
17import Control.Arrow ((***), (+++))
9import Control.Arrow ((***), (+++))
18
10
11+import Data.Foldable (fold)
12+import Data.List (mapAccumL)
13+import Data.Maybe (mapMaybe)
14+import qualified Data.Set as S
15+
19import Language.PureScript.AST.Binders
16import Language.PureScript.AST.Binders
20import Language.PureScript.AST.Literals
17import Language.PureScript.AST.Literals
21import Language.PureScript.AST.Declarations
18import Language.PureScript.AST.Declarations
src/Language/PureScript/Bundle.hs+7−24
@@ -1,25 +1,9 @@
1−-----------------------------------------------------------------------------
1+-- |
2−--
3−-- Module : psc-bundle
4−-- Copyright : (c) Phil Freeman 2015
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11−-- | Bundles compiled PureScript modules for the browser.
2+-- Bundles compiled PureScript modules for the browser.
12--
3--
13-- This module takes as input the individual generated modules from 'Language.PureScript.Make' and
4-- This module takes as input the individual generated modules from 'Language.PureScript.Make' and
14-- performs dead code elimination, filters empty modules,
5-- performs dead code elimination, filters empty modules,
15-- and generates the final Javascript bundle.
6-- and generates the final Javascript bundle.
16−-----------------------------------------------------------------------------
17−
18−{-# LANGUAGE PatternGuards #-}
19−{-# LANGUAGE FlexibleContexts #-}
20−{-# LANGUAGE ScopedTypeVariables #-}
21−{-# LANGUAGE TupleSections #-}
22−
23module Language.PureScript.Bundle (
7module Language.PureScript.Bundle (
24 bundle
8 bundle
25 , ModuleIdentifier(..)
9 , ModuleIdentifier(..)
@@ -30,19 +14,18 @@ module Language.PureScript.Bundle (
30 , getExportedIdentifiers
14 , getExportedIdentifiers
31) where
15) where
32
16
33−import Prelude ()
34import Prelude.Compat
17import Prelude.Compat
35
18
36−import Data.List (nub, stripPrefix)
19+import Control.Monad
37−import Data.Maybe (mapMaybe, catMaybes)
20+import Control.Monad.Error.Class
21+
38import Data.Generics (everything, everywhere, mkQ, mkT)
22import Data.Generics (everything, everywhere, mkQ, mkT)
39import Data.Graph
23import Data.Graph
24+import Data.List (nub, stripPrefix)
25+import Data.Maybe (mapMaybe, catMaybes)
40import Data.Version (showVersion)
26import Data.Version (showVersion)
41−
42import qualified Data.Set as S
27import qualified Data.Set as S
43
28
44−import Control.Monad
45−import Control.Monad.Error.Class
46import Language.JavaScript.Parser
29import Language.JavaScript.Parser
47import Language.JavaScript.Parser.AST
30import Language.JavaScript.Parser.AST
48
31
src/Language/PureScript/CodeGen.hs+8−20
@@ -1,20 +1,8 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.CodeGen
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11−-- |
1+-- |
12−-- A collection of modules related to code generation:
2+-- A collection of modules related to code generation:
13−--
3+--
14−-- [@Language.PureScript.CodeGen.JS@] Code generator for Javascript
4+-- [@Language.PureScript.CodeGen.JS@] Code generator for Javascript
15−--
5+--
16−-----------------------------------------------------------------------------
17−
18−module Language.PureScript.CodeGen (module C) where
6+module Language.PureScript.CodeGen (module C) where
19−
7+
20−import Language.PureScript.CodeGen.JS as C
8+import Language.PureScript.CodeGen.JS as C
src/Language/PureScript/CodeGen/JS.hs+9−15
@@ -1,8 +1,3 @@
1−{-# LANGUAGE GADTs #-}
2−{-# LANGUAGE ViewPatterns #-}
3−{-# LANGUAGE FlexibleContexts #-}
4−{-# LANGUAGE ScopedTypeVariables #-}
5−
6-- |
1-- |
7-- This module generates code in the simplified Javascript intermediate representation from Purescript code
2-- This module generates code in the simplified Javascript intermediate representation from Purescript code
8--
3--
@@ -12,29 +7,28 @@ module Language.PureScript.CodeGen.JS
12 , moduleToJs
7 , moduleToJs
13 ) where
8 ) where
14
9
15−import Prelude ()
16import Prelude.Compat
10import Prelude.Compat
17
11
18−import Data.List ((\\), delete, intersect)
19−import Data.Maybe (isNothing, fromMaybe)
20−import qualified Data.Map as M
21−import qualified Data.Foldable as F
22−import qualified Data.Traversable as T
23−
24import Control.Arrow ((&&&))
12import Control.Arrow ((&&&))
25import Control.Monad (replicateM, forM, void)
13import Control.Monad (replicateM, forM, void)
26import Control.Monad.Error.Class (MonadError(..))
14import Control.Monad.Error.Class (MonadError(..))
27import Control.Monad.Reader (MonadReader, asks)
15import Control.Monad.Reader (MonadReader, asks)
28import Control.Monad.Supply.Class
16import Control.Monad.Supply.Class
29
17
30−import Language.PureScript.Crash
18+import Data.List ((\\), delete, intersect)
19+import Data.Maybe (isNothing, fromMaybe)
20+import qualified Data.Foldable as F
21+import qualified Data.Map as M
22+import qualified Data.Traversable as T
23+
31import Language.PureScript.AST.SourcePos
24import Language.PureScript.AST.SourcePos
32import Language.PureScript.CodeGen.JS.AST as AST
25import Language.PureScript.CodeGen.JS.AST as AST
33import Language.PureScript.CodeGen.JS.Common as Common
26import Language.PureScript.CodeGen.JS.Common as Common
27+import Language.PureScript.CodeGen.JS.Optimizer
34import Language.PureScript.CoreFn
28import Language.PureScript.CoreFn
35−import Language.PureScript.Names
29+import Language.PureScript.Crash
36import Language.PureScript.Errors
30import Language.PureScript.Errors
37−import Language.PureScript.CodeGen.JS.Optimizer
31+import Language.PureScript.Names
38import Language.PureScript.Options
32import Language.PureScript.Options
39import Language.PureScript.Traversals (sndM)
33import Language.PureScript.Traversals (sndM)
40import qualified Language.PureScript.Constants as C
34import qualified Language.PureScript.Constants as C
src/Language/PureScript/CodeGen/JS/AST.hs+1−2
@@ -3,14 +3,13 @@
3--
3--
4module Language.PureScript.CodeGen.JS.AST where
4module Language.PureScript.CodeGen.JS.AST where
5
5
6−import Prelude ()
7import Prelude.Compat
6import Prelude.Compat
8
7
9import Control.Monad.Identity
8import Control.Monad.Identity
10
9
10+import Language.PureScript.AST (SourceSpan(..))
11import Language.PureScript.Comments
11import Language.PureScript.Comments
12import Language.PureScript.Traversals
12import Language.PureScript.Traversals
13−import Language.PureScript.AST (SourceSpan(..))
14
13
15-- |
14-- |
16-- Built-in unary operators
15-- Built-in unary operators
src/Language/PureScript/CodeGen/JS/Common.hs+2
@@ -3,6 +3,8 @@
3--
3--
4module Language.PureScript.CodeGen.JS.Common where
4module Language.PureScript.CodeGen.JS.Common where
5
5
6+import Prelude.Compat
7+
6import Data.Char
8import Data.Char
7import Data.List (intercalate)
9import Data.List (intercalate)
8
10
src/Language/PureScript/CodeGen/JS/Optimizer.hs+5−9
@@ -1,5 +1,3 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−
3-- |
1-- |
4-- This module optimizes code in the simplified-Javascript intermediate representation.
2-- This module optimizes code in the simplified-Javascript intermediate representation.
5--
3--
@@ -23,22 +21,20 @@
23--
21--
24module Language.PureScript.CodeGen.JS.Optimizer (optimize) where
22module Language.PureScript.CodeGen.JS.Optimizer (optimize) where
25
23
26−import Prelude ()
27import Prelude.Compat
24import Prelude.Compat
28
25
29import Control.Monad.Reader (MonadReader, ask, asks)
26import Control.Monad.Reader (MonadReader, ask, asks)
30import Control.Monad.Supply.Class (MonadSupply)
27import Control.Monad.Supply.Class (MonadSupply)
31
28
32import Language.PureScript.CodeGen.JS.AST
29import Language.PureScript.CodeGen.JS.AST
33−import Language.PureScript.Options
30+import Language.PureScript.CodeGen.JS.Optimizer.Blocks
34−import qualified Language.PureScript.Constants as C
35−
36import Language.PureScript.CodeGen.JS.Optimizer.Common
31import Language.PureScript.CodeGen.JS.Optimizer.Common
37−import Language.PureScript.CodeGen.JS.Optimizer.TCO
38−import Language.PureScript.CodeGen.JS.Optimizer.MagicDo
39import Language.PureScript.CodeGen.JS.Optimizer.Inliner
32import Language.PureScript.CodeGen.JS.Optimizer.Inliner
33+import Language.PureScript.CodeGen.JS.Optimizer.MagicDo
34+import Language.PureScript.CodeGen.JS.Optimizer.TCO
40import Language.PureScript.CodeGen.JS.Optimizer.Unused
35import Language.PureScript.CodeGen.JS.Optimizer.Unused
41−import Language.PureScript.CodeGen.JS.Optimizer.Blocks
36+import Language.PureScript.Options
37+import qualified Language.PureScript.Constants as C
42
38
43-- |
39-- |
44-- Apply a series of optimizer passes to simplified Javascript code
40-- Apply a series of optimizer passes to simplified Javascript code
src/Language/PureScript/CodeGen/JS/Optimizer/Blocks.hs+2−12
@@ -1,23 +1,13 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.CodeGen.JS.Optimizer.Blocks
4−-- Copyright : (c) Phil Freeman 2013-14
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- Optimizer steps for simplifying Javascript blocks
2-- Optimizer steps for simplifying Javascript blocks
13--
3--
14−-----------------------------------------------------------------------------
15−
16module Language.PureScript.CodeGen.JS.Optimizer.Blocks
4module Language.PureScript.CodeGen.JS.Optimizer.Blocks
17 ( collapseNestedBlocks
5 ( collapseNestedBlocks
18 , collapseNestedIfs
6 , collapseNestedIfs
19 ) where
7 ) where
20
8
9+import Prelude.Compat
10+
21import Language.PureScript.CodeGen.JS.AST
11import Language.PureScript.CodeGen.JS.AST
22
12
23-- |
13-- |
src/Language/PureScript/CodeGen/JS/Optimizer/Common.hs+2
@@ -3,6 +3,8 @@
3--
3--
4module Language.PureScript.CodeGen.JS.Optimizer.Common where
4module Language.PureScript.CodeGen.JS.Optimizer.Common where
5
5
6+import Prelude.Compat
7+
6import Data.Maybe (fromMaybe)
8import Data.Maybe (fromMaybe)
7
9
8import Language.PureScript.Crash
10import Language.PureScript.Crash
src/Language/PureScript/CodeGen/JS/Optimizer/Inliner.hs+2−2
@@ -12,16 +12,16 @@ module Language.PureScript.CodeGen.JS.Optimizer.Inliner
12 , evaluateIifes
12 , evaluateIifes
13 ) where
13 ) where
14
14
15−import Prelude ()
16import Prelude.Compat
15import Prelude.Compat
17
16
18import Control.Monad.Supply.Class (MonadSupply, freshName)
17import Control.Monad.Supply.Class (MonadSupply, freshName)
18+
19import Data.Maybe (fromMaybe)
19import Data.Maybe (fromMaybe)
20
20
21import Language.PureScript.CodeGen.JS.AST
21import Language.PureScript.CodeGen.JS.AST
22import Language.PureScript.CodeGen.JS.Common
22import Language.PureScript.CodeGen.JS.Common
23−import Language.PureScript.Names
24import Language.PureScript.CodeGen.JS.Optimizer.Common
23import Language.PureScript.CodeGen.JS.Optimizer.Common
24+import Language.PureScript.Names
25import qualified Language.PureScript.Constants as C
25import qualified Language.PureScript.Constants as C
26
26
27-- TODO: Potential bug:
27-- TODO: Potential bug:
src/Language/PureScript/CodeGen/JS/Optimizer/MagicDo.hs+2
@@ -4,6 +4,8 @@
4--
4--
5module Language.PureScript.CodeGen.JS.Optimizer.MagicDo (magicDo) where
5module Language.PureScript.CodeGen.JS.Optimizer.MagicDo (magicDo) where
6
6
7+import Prelude.Compat
8+
7import Data.List (nub)
9import Data.List (nub)
8import Data.Maybe (fromJust, isJust)
10import Data.Maybe (fromJust, isJust)
9
11
src/Language/PureScript/CodeGen/JS/Optimizer/TCO.hs+2−12
@@ -1,20 +1,10 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.CodeGen.JS.Optimizer.TCO
4−-- Copyright : (c) Phil Freeman 2013-14
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- This module implements tail call elimination.
2-- This module implements tail call elimination.
13--
3--
14−-----------------------------------------------------------------------------
15−
16module Language.PureScript.CodeGen.JS.Optimizer.TCO (tco) where
4module Language.PureScript.CodeGen.JS.Optimizer.TCO (tco) where
17
5
6+import Prelude.Compat
7+
18import Data.Monoid
8import Data.Monoid
19
9
20import Language.PureScript.Options
10import Language.PureScript.Options
src/Language/PureScript/CodeGen/JS/Optimizer/Unused.hs+2−13
@@ -1,27 +1,16 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.CodeGen.JS.Optimizer.Unused
4−-- Copyright : (c) Phil Freeman 2013-14
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- Removes unused variables
2-- Removes unused variables
13--
3--
14−-----------------------------------------------------------------------------
15−
16module Language.PureScript.CodeGen.JS.Optimizer.Unused
4module Language.PureScript.CodeGen.JS.Optimizer.Unused
17 ( removeCodeAfterReturnStatements
5 ( removeCodeAfterReturnStatements
18 , removeUnusedArg
6 , removeUnusedArg
19 , removeUndefinedApp
7 , removeUndefinedApp
20 ) where
8 ) where
21
9
10+import Prelude.Compat
11+
22import Language.PureScript.CodeGen.JS.AST
12import Language.PureScript.CodeGen.JS.AST
23import Language.PureScript.CodeGen.JS.Optimizer.Common
13import Language.PureScript.CodeGen.JS.Optimizer.Common
24−
25import qualified Language.PureScript.Constants as C
14import qualified Language.PureScript.Constants as C
26
15
27removeCodeAfterReturnStatements :: JS -> JS
16removeCodeAfterReturnStatements :: JS -> JS
src/Language/PureScript/Comments.hs+2
@@ -5,6 +5,8 @@
5--
5--
6module Language.PureScript.Comments where
6module Language.PureScript.Comments where
7
7
8+import Prelude.Compat
9+
8import Data.Aeson.TH
10import Data.Aeson.TH
9
11
10data Comment
12data Comment
src/Language/PureScript/Constants.hs+2−3
@@ -1,9 +1,8 @@
1−{-# LANGUAGE DataKinds #-}
2−{-# LANGUAGE PatternSynonyms #-}
3−
4-- | Various constants which refer to things in the Prelude
1-- | Various constants which refer to things in the Prelude
5module Language.PureScript.Constants where
2module Language.PureScript.Constants where
6
3
4+import Prelude.Compat
5+
7import Language.PureScript.Names
6import Language.PureScript.Names
8
7
9-- Operators
8-- Operators
src/Language/PureScript/CoreFn.hs+1−1
@@ -5,11 +5,11 @@ module Language.PureScript.CoreFn (
5 module C
5 module C
6) where
6) where
7
7
8+import Language.PureScript.AST.Literals as C
8import Language.PureScript.CoreFn.Ann as C
9import Language.PureScript.CoreFn.Ann as C
9import Language.PureScript.CoreFn.Binders as C
10import Language.PureScript.CoreFn.Binders as C
10import Language.PureScript.CoreFn.Desugar as C
11import Language.PureScript.CoreFn.Desugar as C
11import Language.PureScript.CoreFn.Expr as C
12import Language.PureScript.CoreFn.Expr as C
12−import Language.PureScript.AST.Literals as C
13import Language.PureScript.CoreFn.Meta as C
13import Language.PureScript.CoreFn.Meta as C
14import Language.PureScript.CoreFn.Module as C
14import Language.PureScript.CoreFn.Module as C
15import Language.PureScript.CoreFn.Traversals as C
15import Language.PureScript.CoreFn.Traversals as C
src/Language/PureScript/CoreFn/Ann.hs+25−37
@@ -1,37 +1,25 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.CoreFn.Ann
4−-- Copyright : (c) 2013-14 Phil Freeman, (c) 2014 Gary Burgess, and other contributors
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>, Gary Burgess <gary.burgess@gmail.com>
8−-- Stability : experimental
9−-- Portability :
10−--
11−-- | Type alias for basic annotations
12−--
13−-----------------------------------------------------------------------------
14−
15−module Language.PureScript.CoreFn.Ann where
1+module Language.PureScript.CoreFn.Ann where
16−
2+
3+import Prelude.Compat
4+
17−import Language.PureScript.AST.SourcePos
5+import Language.PureScript.AST.SourcePos
18−import Language.PureScript.CoreFn.Meta
6+import Language.PureScript.Comments
7+import Language.PureScript.CoreFn.Meta
19−import Language.PureScript.Types
8+import Language.PureScript.Types
20−import Language.PureScript.Comments
9+
21−
22−-- |
10+-- |
23−-- Type alias for basic annotations
11+-- Type alias for basic annotations
24−--
12+--
25−type Ann = (Maybe SourceSpan, [Comment], Maybe Type, Maybe Meta)
13+type Ann = (Maybe SourceSpan, [Comment], Maybe Type, Maybe Meta)
26−
14+
27−-- |
15+-- |
28−-- Initial annotation with no metadata
16+-- Initial annotation with no metadata
29−--
17+--
30−nullAnn :: Ann
18+nullAnn :: Ann
31−nullAnn = (Nothing, [], Nothing, Nothing)
19+nullAnn = (Nothing, [], Nothing, Nothing)
32−
20+
33−-- |
21+-- |
34−-- Remove the comments from an annotation
22+-- Remove the comments from an annotation
35−--
23+--
36−removeComments :: Ann -> Ann
24+removeComments :: Ann -> Ann
37−removeComments (ss, _, ty, meta) = (ss, [], ty, meta)
25+removeComments (ss, _, ty, meta) = (ss, [], ty, meta)
src/Language/PureScript/CoreFn/Binders.hs+2−2
@@ -1,10 +1,10 @@
1−{-# LANGUAGE DeriveFunctor #-}
2−
3-- |
1-- |
4-- The core functional representation for binders
2-- The core functional representation for binders
5--
3--
6module Language.PureScript.CoreFn.Binders where
4module Language.PureScript.CoreFn.Binders where
7
5
6+import Prelude.Compat
7+
8import Language.PureScript.AST.Literals
8import Language.PureScript.AST.Literals
9import Language.PureScript.Names
9import Language.PureScript.Names
10
10
src/Language/PureScript/CoreFn/Desugar.hs+4−6
@@ -1,30 +1,28 @@
1module Language.PureScript.CoreFn.Desugar (moduleToCoreFn) where
1module Language.PureScript.CoreFn.Desugar (moduleToCoreFn) where
2
2
3−import Prelude ()
4import Prelude.Compat
3import Prelude.Compat
5
4
5+import Control.Arrow (second, (***))
6
6
7import Data.Function (on)
7import Data.Function (on)
8import Data.List (sort, sortBy, nub)
8import Data.List (sort, sortBy, nub)
9import Data.Maybe (mapMaybe)
9import Data.Maybe (mapMaybe)
10import qualified Data.Map as M
10import qualified Data.Map as M
11
11
12−import Control.Arrow (second, (***))
13−
14−import Language.PureScript.Crash
12+import Language.PureScript.AST.Literals
15import Language.PureScript.AST.SourcePos
13import Language.PureScript.AST.SourcePos
16import Language.PureScript.AST.Traversals
14import Language.PureScript.AST.Traversals
15+import Language.PureScript.Comments
17import Language.PureScript.CoreFn.Ann
16import Language.PureScript.CoreFn.Ann
18import Language.PureScript.CoreFn.Binders
17import Language.PureScript.CoreFn.Binders
19import Language.PureScript.CoreFn.Expr
18import Language.PureScript.CoreFn.Expr
20−import Language.PureScript.AST.Literals
21import Language.PureScript.CoreFn.Meta
19import Language.PureScript.CoreFn.Meta
22import Language.PureScript.CoreFn.Module
20import Language.PureScript.CoreFn.Module
21+import Language.PureScript.Crash
23import Language.PureScript.Environment
22import Language.PureScript.Environment
24import Language.PureScript.Names
23import Language.PureScript.Names
25import Language.PureScript.Sugar.TypeClasses (typeClassMemberName, superClassDictionaryNames)
24import Language.PureScript.Sugar.TypeClasses (typeClassMemberName, superClassDictionaryNames)
26import Language.PureScript.Types
25import Language.PureScript.Types
27−import Language.PureScript.Comments
28import qualified Language.PureScript.AST as A
26import qualified Language.PureScript.AST as A
29
27
30-- |
28-- |
src/Language/PureScript/CoreFn/Expr.hs+3−3
@@ -1,14 +1,14 @@
1−{-# LANGUAGE DeriveFunctor #-}
2−
3-- |
1-- |
4-- The core functional representation
2-- The core functional representation
5--
3--
6module Language.PureScript.CoreFn.Expr where
4module Language.PureScript.CoreFn.Expr where
7
5
6+import Prelude.Compat
7+
8import Control.Arrow ((***))
8import Control.Arrow ((***))
9
9
10−import Language.PureScript.CoreFn.Binders
11import Language.PureScript.AST.Literals
10import Language.PureScript.AST.Literals
11+import Language.PureScript.CoreFn.Binders
12import Language.PureScript.Names
12import Language.PureScript.Names
13
13
14-- |
14-- |
src/Language/PureScript/CoreFn/Meta.hs+2
@@ -3,6 +3,8 @@
3--
3--
4module Language.PureScript.CoreFn.Meta where
4module Language.PureScript.CoreFn.Meta where
5
5
6+import Prelude.Compat
7+
6import Language.PureScript.Names
8import Language.PureScript.Names
7
9
8-- |
10-- |
src/Language/PureScript/CoreFn/Module.hs+5−14
@@ -1,24 +1,15 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.CoreFn.Module
4−-- Copyright : (c) 2013-14 Phil Freeman, (c) 2014 Gary Burgess, and other contributors
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>, Gary Burgess <gary.burgess@gmail.com>
8−-- Stability : experimental
9−-- Portability :
10−--
11−-- | The CoreFn module representation
12−--
13−-----------------------------------------------------------------------------
14−
15module Language.PureScript.CoreFn.Module where
1module Language.PureScript.CoreFn.Module where
16
2
3+import Prelude.Compat
4+
17import Language.PureScript.Comments
5import Language.PureScript.Comments
18import Language.PureScript.CoreFn.Expr
6import Language.PureScript.CoreFn.Expr
19import Language.PureScript.Names
7import Language.PureScript.Names
20import Language.PureScript.Types
8import Language.PureScript.Types
21
9
10+-- |
11+-- The CoreFn module representation
12+--
22data Module a = Module
13data Module a = Module
23 { moduleComments :: [Comment]
14 { moduleComments :: [Comment]
24 , moduleName :: ModuleName
15 , moduleName :: ModuleName
src/Language/PureScript/CoreFn/Traversals.hs+3−1
@@ -3,11 +3,13 @@
3--
3--
4module Language.PureScript.CoreFn.Traversals where
4module Language.PureScript.CoreFn.Traversals where
5
5
6+import Prelude.Compat
7+
6import Control.Arrow (second, (***), (+++))
8import Control.Arrow (second, (***), (+++))
7
9
10+import Language.PureScript.AST.Literals
8import Language.PureScript.CoreFn.Binders
11import Language.PureScript.CoreFn.Binders
9import Language.PureScript.CoreFn.Expr
12import Language.PureScript.CoreFn.Expr
10−import Language.PureScript.AST.Literals
11
13
12everywhereOnValues :: (Bind a -> Bind a) ->
14everywhereOnValues :: (Bind a -> Bind a) ->
13 (Expr a -> Expr a) ->
15 (Expr a -> Expr a) ->
src/Language/PureScript/Crash.hs+11−9
@@ -1,9 +1,11 @@
1−module Language.PureScript.Crash where
1+module Language.PureScript.Crash where
2−
2+
3+import Prelude.Compat
4+
3−-- | Exit with an error message and a crash report link.
5+-- | Exit with an error message and a crash report link.
4−internalError :: String -> a
6+internalError :: String -> a
5−internalError =
7+internalError =
6− error
8+ error
7− . ("An internal error ocurred during compilation: " ++)
9+ . ("An internal error ocurred during compilation: " ++)
8− . (++ "\nPlease report this at https://github.com/purescript/purescript/issues")
10+ . (++ "\nPlease report this at https://github.com/purescript/purescript/issues")
9− . show
11+ . show
src/Language/PureScript/Docs.hs+4−4
@@ -6,9 +6,9 @@ module Language.PureScript.Docs (
6 module Docs
6 module Docs
7) where
7) where
8
8
9−import Language.PureScript.Docs.Types as Docs
10−import Language.PureScript.Docs.RenderedCode.Types as Docs
11−import Language.PureScript.Docs.RenderedCode.Render as Docs
12import Language.PureScript.Docs.Convert as Docs
9import Language.PureScript.Docs.Convert as Docs
13−import Language.PureScript.Docs.Render as Docs
14import Language.PureScript.Docs.ParseAndBookmark as Docs
10import Language.PureScript.Docs.ParseAndBookmark as Docs
11+import Language.PureScript.Docs.Render as Docs
12+import Language.PureScript.Docs.RenderedCode.Render as Docs
13+import Language.PureScript.Docs.RenderedCode.Types as Docs
14+import Language.PureScript.Docs.Types as Docs
src/Language/PureScript/Docs/AsMarkdown.hs+4−8
@@ -1,6 +1,3 @@
1−{-# LANGUAGE RecordWildCards #-}
2−{-# LANGUAGE FlexibleContexts #-}
3−
4module Language.PureScript.Docs.AsMarkdown
1module Language.PureScript.Docs.AsMarkdown
5 ( renderModulesAsMarkdown
2 ( renderModulesAsMarkdown
6 , Docs
3 , Docs
@@ -9,19 +6,18 @@ module Language.PureScript.Docs.AsMarkdown
9 , codeToString
6 , codeToString
10 ) where
7 ) where
11
8
12−import Prelude ()
13import Prelude.Compat
9import Prelude.Compat
14
10
15import Control.Monad (unless, zipWithM_)
11import Control.Monad (unless, zipWithM_)
16−import Control.Monad.Writer (Writer, tell, execWriter)
17import Control.Monad.Error.Class (MonadError)
12import Control.Monad.Error.Class (MonadError)
13+import Control.Monad.Writer (Writer, tell, execWriter)
14+
18import Data.Foldable (for_)
15import Data.Foldable (for_)
19import Data.List (partition)
16import Data.List (partition)
20
17
21−import qualified Language.PureScript as P
22−
23−import Language.PureScript.Docs.Types
24import Language.PureScript.Docs.RenderedCode
18import Language.PureScript.Docs.RenderedCode
19+import Language.PureScript.Docs.Types
20+import qualified Language.PureScript as P
25import qualified Language.PureScript.Docs.Convert as Convert
21import qualified Language.PureScript.Docs.Convert as Convert
26import qualified Language.PureScript.Docs.Render as Render
22import qualified Language.PureScript.Docs.Render as Render
27
23
src/Language/PureScript/Docs/Convert.hs+5−8
@@ -1,6 +1,4 @@
1−{-# LANGUAGE TupleSections #-}
2{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
3−{-# LANGUAGE FlexibleContexts #-}
4
2
5-- | Functions for converting PureScript ASTs into values of the data types
3-- | Functions for converting PureScript ASTs into values of the data types
6-- from Language.PureScript.Docs.
4-- from Language.PureScript.Docs.
@@ -11,24 +9,23 @@ module Language.PureScript.Docs.Convert
11 , collectBookmarks
9 , collectBookmarks
12 ) where
10 ) where
13
11
14−import Prelude ()
15import Prelude.Compat
12import Prelude.Compat
16
13
17import Control.Arrow ((&&&), second)
14import Control.Arrow ((&&&), second)
18import Control.Category ((>>>))
15import Control.Category ((>>>))
19import Control.Monad
16import Control.Monad
17+import Control.Monad.Error.Class (MonadError)
20import Control.Monad.State (runStateT)
18import Control.Monad.State (runStateT)
21import Control.Monad.Writer.Strict (runWriterT)
19import Control.Monad.Writer.Strict (runWriterT)
22−import Control.Monad.Error.Class (MonadError)
23import qualified Data.Map as Map
20import qualified Data.Map as Map
24
21
25−import Text.Parsec (eof)
26−import qualified Language.PureScript as P
27−import qualified Language.PureScript.Constants as C
28−
29import Language.PureScript.Docs.Convert.ReExports (updateReExports)
22import Language.PureScript.Docs.Convert.ReExports (updateReExports)
30import Language.PureScript.Docs.Convert.Single (convertSingleModule, collectBookmarks)
23import Language.PureScript.Docs.Convert.Single (convertSingleModule, collectBookmarks)
31import Language.PureScript.Docs.Types
24import Language.PureScript.Docs.Types
25+import qualified Language.PureScript as P
26+import qualified Language.PureScript.Constants as C
27+
28+import Text.Parsec (eof)
32
29
33-- |
30-- |
34-- Like convertModules, except that it takes a list of modules, together with
31-- Like convertModules, except that it takes a list of modules, together with
src/Language/PureScript/Docs/Convert/ReExports.hs+7−12
@@ -1,29 +1,24 @@
1−{-# LANGUAGE TupleSections #-}
2−{-# LANGUAGE RecordWildCards #-}
3−{-# LANGUAGE FlexibleContexts #-}
4−
5module Language.PureScript.Docs.Convert.ReExports
1module Language.PureScript.Docs.Convert.ReExports
6 ( updateReExports
2 ( updateReExports
7 ) where
3 ) where
8
4
9−import Prelude ()
10import Prelude.Compat
5import Prelude.Compat
11
6
7+import Control.Arrow ((&&&), first, second)
12import Control.Monad
8import Control.Monad
13−import Control.Monad.Trans.State.Strict (execState)
9+import Control.Monad.Reader.Class (MonadReader, ask)
14import Control.Monad.State.Class (MonadState, gets, modify)
10import Control.Monad.State.Class (MonadState, gets, modify)
15import Control.Monad.Trans.Reader (runReaderT)
11import Control.Monad.Trans.Reader (runReaderT)
16−import Control.Monad.Reader.Class (MonadReader, ask)
12+import Control.Monad.Trans.State.Strict (execState)
17−import Control.Arrow ((&&&), first, second)
13+
18import Data.Either
14import Data.Either
19−import Data.Maybe (mapMaybe)
20import Data.Map (Map)
15import Data.Map (Map)
21−import qualified Data.Map as Map
16+import Data.Maybe (mapMaybe)
22import Data.Monoid ((<>))
17import Data.Monoid ((<>))
23−
24−import qualified Language.PureScript as P
18+import qualified Data.Map as Map
25
19
26import Language.PureScript.Docs.Types
20import Language.PureScript.Docs.Types
21+import qualified Language.PureScript as P
27
22
28-- |
23-- |
29-- Given:
24-- Given:
src/Language/PureScript/Docs/Convert/Single.hs+4−9
@@ -1,26 +1,21 @@
1−{-# LANGUAGE TupleSections #-}
2{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
3−{-# LANGUAGE RecordWildCards #-}
4−{-# LANGUAGE ViewPatterns #-}
5−{-# LANGUAGE FlexibleContexts #-}
6
2
7module Language.PureScript.Docs.Convert.Single
3module Language.PureScript.Docs.Convert.Single
8 ( convertSingleModule
4 ( convertSingleModule
9 , collectBookmarks
5 , collectBookmarks
10 ) where
6 ) where
11
7
12−import Prelude ()
13import Prelude.Compat
8import Prelude.Compat
14−import Data.Maybe (mapMaybe, isNothing)
15
9
16−import Control.Monad
17import Control.Category ((>>>))
10import Control.Category ((>>>))
11+import Control.Monad
12+
18import Data.Either
13import Data.Either
19import Data.List (nub, isPrefixOf, isSuffixOf)
14import Data.List (nub, isPrefixOf, isSuffixOf)
20−
15+import Data.Maybe (mapMaybe, isNothing)
21−import qualified Language.PureScript as P
22
16
23import Language.PureScript.Docs.Types
17import Language.PureScript.Docs.Types
18+import qualified Language.PureScript as P
24
19
25-- |
20-- |
26-- Convert a single Module, but ignore re-exports; any re-exported types or
21-- Convert a single Module, but ignore re-exports; any re-exported types or
src/Language/PureScript/Docs/ParseAndBookmark.hs+6−10
@@ -1,26 +1,22 @@
1−{-# LANGUAGE TupleSections #-}
2−{-# LANGUAGE FlexibleContexts #-}
3−
4module Language.PureScript.Docs.ParseAndBookmark
1module Language.PureScript.Docs.ParseAndBookmark
5 ( parseAndBookmark
2 ( parseAndBookmark
6 ) where
3 ) where
7
4
8−import Prelude ()
9import Prelude.Compat
5import Prelude.Compat
10
6
11−import qualified Data.Map as M
12import Control.Arrow (first)
7import Control.Arrow (first)
13−
14import Control.Monad.Error.Class (MonadError(..))
8import Control.Monad.Error.Class (MonadError(..))
15import Control.Monad.IO.Class (MonadIO(..))
9import Control.Monad.IO.Class (MonadIO(..))
16
10
17−import Web.Bower.PackageMeta (PackageName)
11+import qualified Data.Map as M
12+
13+import Language.PureScript.Docs.Convert (collectBookmarks)
14+import Language.PureScript.Docs.Types
15+import qualified Language.PureScript as P
18
16
19import System.IO.UTF8 (readUTF8File)
17import System.IO.UTF8 (readUTF8File)
20
18
21−import qualified Language.PureScript as P
19+import Web.Bower.PackageMeta (PackageName)
22−import Language.PureScript.Docs.Types
23−import Language.PureScript.Docs.Convert (collectBookmarks)
24
20
25-- |
21-- |
26-- Given:
22-- Given:
src/Language/PureScript/Docs/Render.hs+6−5
@@ -1,6 +1,5 @@
1−{-# LANGUAGE RecordWildCards #-}
1+-- |
2−
3−-- | Functions for creating `RenderedCode` values from data types in
2+-- Functions for creating `RenderedCode` values from data types in
4-- Language.PureScript.Docs.Types.
3-- Language.PureScript.Docs.Types.
5--
4--
6-- These functions are the ones that are used in markdown/html documentation
5-- These functions are the ones that are used in markdown/html documentation
@@ -10,13 +9,15 @@
10
9
11module Language.PureScript.Docs.Render where
10module Language.PureScript.Docs.Render where
12
11
12+import Prelude.Compat
13+
13import Data.Maybe (maybeToList)
14import Data.Maybe (maybeToList)
14import Data.Monoid ((<>))
15import Data.Monoid ((<>))
15−import qualified Language.PureScript as P
16
16
17−import Language.PureScript.Docs.Types
18import Language.PureScript.Docs.RenderedCode
17import Language.PureScript.Docs.RenderedCode
18+import Language.PureScript.Docs.Types
19import Language.PureScript.Docs.Utils.MonoidExtras
19import Language.PureScript.Docs.Utils.MonoidExtras
20+import qualified Language.PureScript as P
20
21
21renderDeclaration :: Declaration -> RenderedCode
22renderDeclaration :: Declaration -> RenderedCode
22renderDeclaration = renderDeclarationWithOptions defaultRenderTypeOptions
23renderDeclaration = renderDeclarationWithOptions defaultRenderTypeOptions
src/Language/PureScript/Docs/RenderedCode.hs+8−11
@@ -1,11 +1,8 @@
1−
1+
2−-- | Data types and functions for representing a simplified form of PureScript
2+-- | Data types and functions for representing a simplified form of PureScript
3−-- code, intended for use in e.g. HTML documentation.
3+-- code, intended for use in e.g. HTML documentation.
4−
4+
5−module Language.PureScript.Docs.RenderedCode (
5+module Language.PureScript.Docs.RenderedCode (module RenderedCode) where
6− module RenderedCode
6+
7−) where
8−
9−import Language.PureScript.Docs.RenderedCode.Types as RenderedCode
7+import Language.PureScript.Docs.RenderedCode.Types as RenderedCode
10−import Language.PureScript.Docs.RenderedCode.Render as RenderedCode
8+import Language.PureScript.Docs.RenderedCode.Render as RenderedCode
11−
src/Language/PureScript/Docs/RenderedCode/Render.hs+25−24
@@ -1,33 +1,31 @@
1-- | Functions for producing RenderedCode values from PureScript Type values.
1-- | Functions for producing RenderedCode values from PureScript Type values.
2
2
3−module Language.PureScript.Docs.RenderedCode.Render (
3+module Language.PureScript.Docs.RenderedCode.Render
4− renderType,
4+ ( renderType
5− renderTypeAtom,
5+ , renderTypeAtom
6− renderRow,
6+ , renderRow
7− renderKind,
7+ , renderKind
8− RenderTypeOptions(..),
8+ , RenderTypeOptions(..)
9− defaultRenderTypeOptions,
9+ , defaultRenderTypeOptions
10− renderTypeWithOptions
10+ , renderTypeWithOptions
11−) where
11+ ) where
12−
12+
13−import Prelude ()
14import Prelude.Compat
13import Prelude.Compat
15
14
16−import Data.Monoid ((<>))
17import Data.Maybe (fromMaybe)
15import Data.Maybe (fromMaybe)
16+import Data.Monoid ((<>))
18
17
19import Control.Arrow ((<+>))
18import Control.Arrow ((<+>))
20−import Control.PatternArrows
19+import Control.PatternArrows as PA
21
20
22import Language.PureScript.Crash
21import Language.PureScript.Crash
23−import Language.PureScript.Names
24−import Language.PureScript.Types
25−import Language.PureScript.Kinds
26−import Language.PureScript.Pretty.Kinds
27−import Language.PureScript.Environment
28−
29import Language.PureScript.Docs.RenderedCode.Types
22import Language.PureScript.Docs.RenderedCode.Types
30import Language.PureScript.Docs.Utils.MonoidExtras
23import Language.PureScript.Docs.Utils.MonoidExtras
24+import Language.PureScript.Environment
25+import Language.PureScript.Kinds
26+import Language.PureScript.Names
27+import Language.PureScript.Pretty.Kinds
28+import Language.PureScript.Types
31
29
32typeLiterals :: Pattern () Type RenderedCode
30typeLiterals :: Pattern () Type RenderedCode
33typeLiterals = mkPattern match
31typeLiterals = mkPattern match
@@ -184,9 +182,10 @@ renderKind = kind . prettyPrintKind
184-- Render code representing a Type, as it should appear inside parentheses
182-- Render code representing a Type, as it should appear inside parentheses
185--
183--
186renderTypeAtom :: Type -> RenderedCode
184renderTypeAtom :: Type -> RenderedCode
187−renderTypeAtom =
185+renderTypeAtom
188− fromMaybe (internalError "Incomplete pattern") . pattern matchTypeAtom () . preprocessType defaultRenderTypeOptions
186+ = fromMaybe (internalError "Incomplete pattern")
189−
187+ . PA.pattern matchTypeAtom ()
188+ . preprocessType defaultRenderTypeOptions
190
189
191-- |
190-- |
192-- Render code representing a Type
191-- Render code representing a Type
@@ -207,5 +206,7 @@ defaultRenderTypeOptions =
207 }
206 }
208
207
209renderTypeWithOptions :: RenderTypeOptions -> Type -> RenderedCode
208renderTypeWithOptions :: RenderTypeOptions -> Type -> RenderedCode
210−renderTypeWithOptions opts =
209+renderTypeWithOptions opts
211− fromMaybe (internalError "Incomplete pattern") . pattern matchType () . preprocessType opts
210+ = fromMaybe (internalError "Incomplete pattern")
211+ . PA.pattern matchType ()
212+ . preprocessType opts
src/Language/PureScript/Docs/RenderedCode/Types.hs+3−3
@@ -32,13 +32,13 @@ module Language.PureScript.Docs.RenderedCode.Types
32 , keywordFixity
32 , keywordFixity
33 ) where
33 ) where
34
34
35−import Prelude ()
36import Prelude.Compat
35import Prelude.Compat
37
36
38−import qualified Data.Aeson as A
39−import Data.Aeson.BetterErrors
40import Control.Monad.Error.Class (MonadError(..))
37import Control.Monad.Error.Class (MonadError(..))
41
38
39+import Data.Aeson.BetterErrors
40+import qualified Data.Aeson as A
41+
42import qualified Language.PureScript as P
42import qualified Language.PureScript as P
43
43
44-- |
44-- |
src/Language/PureScript/Docs/Types.hs+9−11
@@ -1,7 +1,4 @@
1−{-# LANGUAGE RecordWildCards #-}
2{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
3−{-# LANGUAGE TupleSections #-}
4−{-# LANGUAGE RankNTypes #-}
5
2
6module Language.PureScript.Docs.Types
3module Language.PureScript.Docs.Types
7 ( module Language.PureScript.Docs.Types
4 ( module Language.PureScript.Docs.Types
@@ -9,25 +6,26 @@ module Language.PureScript.Docs.Types
9 )
6 )
10 where
7 where
11
8
12−import Prelude ()
13import Prelude.Compat
9import Prelude.Compat
14
10
15import Control.Arrow (first, (***))
11import Control.Arrow (first, (***))
16import Control.Monad (when)
12import Control.Monad (when)
17−import Data.Maybe (mapMaybe)
13+
18−import Data.Version
19import Data.Aeson ((.=))
14import Data.Aeson ((.=))
20−import qualified Data.Aeson as A
21import Data.Aeson.BetterErrors
15import Data.Aeson.BetterErrors
22−import Text.ParserCombinators.ReadP (readP_to_S)
23−import Data.Text (Text)
24import Data.ByteString.Lazy (ByteString)
16import Data.ByteString.Lazy (ByteString)
17+import Data.Maybe (mapMaybe)
18+import Data.Text (Text)
19+import Data.Version
20+import qualified Data.Aeson as A
25import qualified Data.Text as T
21import qualified Data.Text as T
26
22
27−import Web.Bower.PackageMeta hiding (Version, displayError)
28−
29import qualified Language.PureScript as P
23import qualified Language.PureScript as P
30
24
25+import Text.ParserCombinators.ReadP (readP_to_S)
26+
27+import Web.Bower.PackageMeta hiding (Version, displayError)
28+
31import Language.PureScript.Docs.RenderedCode as ReExports
29import Language.PureScript.Docs.RenderedCode as ReExports
32 (RenderedCode, asRenderedCode,
30 (RenderedCode, asRenderedCode,
33 ContainingModule(..), asContainingModule,
31 ContainingModule(..), asContainingModule,
src/Language/PureScript/Environment.hs+4−2
@@ -3,11 +3,13 @@
3
3
4module Language.PureScript.Environment where
4module Language.PureScript.Environment where
5
5
6−import Data.Maybe (fromMaybe)
6+import Prelude.Compat
7+
7import Data.Aeson.TH
8import Data.Aeson.TH
9+import Data.Maybe (fromMaybe)
10+import qualified Data.Aeson as A
8import qualified Data.Map as M
11import qualified Data.Map as M
9import qualified Data.Text as T
12import qualified Data.Text as T
10−import qualified Data.Aeson as A
11
13
12import Language.PureScript.Crash
14import Language.PureScript.Crash
13import Language.PureScript.Kinds
15import Language.PureScript.Kinds
src/Language/PureScript/Errors.hs+13−18
@@ -1,41 +1,36 @@
1{-# LANGUAGE GeneralizedNewtypeDeriving #-}
1{-# LANGUAGE GeneralizedNewtypeDeriving #-}
2−{-# LANGUAGE FlexibleContexts #-}
3−{-# LANGUAGE MultiParamTypeClasses #-}
4{-# LANGUAGE NamedFieldPuns #-}
2{-# LANGUAGE NamedFieldPuns #-}
5
3
6module Language.PureScript.Errors where
4module Language.PureScript.Errors where
7
5
8−import Prelude ()
9import Prelude.Compat
6import Prelude.Compat
10
7
11−import Data.Ord (comparing)
8+import Control.Arrow ((&&&))
9+import Control.Monad
10+import Control.Monad.Error.Class (MonadError(..))
11+import Control.Monad.Trans.State.Lazy
12+import Control.Monad.Writer
13+
12import Data.Char (isSpace)
14import Data.Char (isSpace)
13import Data.Either (lefts, rights)
15import Data.Either (lefts, rights)
14−import Data.List (intercalate, transpose, nub, nubBy, sortBy, partition)
15import Data.Foldable (fold)
16import Data.Foldable (fold)
17+import Data.List (intercalate, transpose, nub, nubBy, sortBy, partition)
16import Data.Maybe (maybeToList)
18import Data.Maybe (maybeToList)
17−
19+import Data.Ord (comparing)
18import qualified Data.Map as M
20import qualified Data.Map as M
19
21
20−import Control.Monad
21−import Control.Monad.Writer
22−import Control.Monad.Error.Class (MonadError(..))
23−import Control.Monad.Trans.State.Lazy
24−import Control.Arrow ((&&&))
25−
26−import Language.PureScript.Crash
27import Language.PureScript.AST
22import Language.PureScript.AST
23+import Language.PureScript.Crash
24+import Language.PureScript.Kinds
25+import Language.PureScript.Names
28import Language.PureScript.Pretty
26import Language.PureScript.Pretty
29import Language.PureScript.Types
27import Language.PureScript.Types
30−import Language.PureScript.Names
31−import Language.PureScript.Kinds
32−import qualified Language.PureScript.Constants as C
33import qualified Language.PureScript.Bundle as Bundle
28import qualified Language.PureScript.Bundle as Bundle
34−
35−import qualified Text.PrettyPrint.Boxes as Box
29+import qualified Language.PureScript.Constants as C
36
30
37import qualified Text.Parsec as P
31import qualified Text.Parsec as P
38import qualified Text.Parsec.Error as PE
32import qualified Text.Parsec.Error as PE
33+import qualified Text.PrettyPrint.Boxes as Box
39import Text.Parsec.Error (Message(..))
34import Text.Parsec.Error (Message(..))
40
35
41-- | A type of error messages
36-- | A type of error messages
src/Language/PureScript/Errors/JSON.hs−15
@@ -1,22 +1,7 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.Errors.JSON
4−-- Copyright : (c) 2013-15 Phil Freeman, (c) 2014-15 Gary Burgess
5−-- License : MIT (http://opensource.org/licenses/MIT)
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11−-- |
12−--
13−-----------------------------------------------------------------------------
14−
15{-# LANGUAGE TemplateHaskell #-}
1{-# LANGUAGE TemplateHaskell #-}
16
2
17module Language.PureScript.Errors.JSON where
3module Language.PureScript.Errors.JSON where
18
4
19−import Prelude ()
20import Prelude.Compat
5import Prelude.Compat
21
6
22import qualified Data.Aeson.TH as A
7import qualified Data.Aeson.TH as A
src/Language/PureScript/Externs.hs+7−10
@@ -1,9 +1,8 @@
1−{-# LANGUAGE RecordWildCards #-}
2−{-# LANGUAGE PatternGuards #-}
3{-# LANGUAGE TemplateHaskell #-}
1{-# LANGUAGE TemplateHaskell #-}
4
2
5-- |
3-- |
6−-- This module generates code for \"externs\" files, i.e. files containing only foreign import declarations.
4+-- This module generates code for \"externs\" files, i.e. files containing only
5+-- foreign import declarations.
7--
6--
8module Language.PureScript.Externs
7module Language.PureScript.Externs
9 ( ExternsFile(..)
8 ( ExternsFile(..)
@@ -14,24 +13,22 @@ module Language.PureScript.Externs
14 , applyExternsFileToEnvironment
13 , applyExternsFileToEnvironment
15 ) where
14 ) where
16
15
17−import Prelude ()
18import Prelude.Compat
16import Prelude.Compat
19
17
18+import Data.Aeson.TH
19+import Data.Foldable (fold)
20import Data.List (find, foldl')
20import Data.List (find, foldl')
21import Data.Maybe (mapMaybe, maybeToList, fromMaybe)
21import Data.Maybe (mapMaybe, maybeToList, fromMaybe)
22−import Data.Foldable (fold)
23import Data.Version (showVersion)
22import Data.Version (showVersion)
24−import Data.Aeson.TH
25−
26import qualified Data.Map as M
23import qualified Data.Map as M
27
24
28−import Language.PureScript.Crash
29import Language.PureScript.AST
25import Language.PureScript.AST
26+import Language.PureScript.Crash
30import Language.PureScript.Environment
27import Language.PureScript.Environment
31−import Language.PureScript.Names
32−import Language.PureScript.Types
33import Language.PureScript.Kinds
28import Language.PureScript.Kinds
29+import Language.PureScript.Names
34import Language.PureScript.TypeClassDictionaries
30import Language.PureScript.TypeClassDictionaries
31+import Language.PureScript.Types
35
32
36import Paths_purescript as Paths
33import Paths_purescript as Paths
37
34
src/Language/PureScript/Ide.hs−4
@@ -12,13 +12,9 @@
12-- Interface for the psc-ide-server
12-- Interface for the psc-ide-server
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−{-# LANGUAGE ConstraintKinds #-}
16−{-# LANGUAGE FlexibleContexts #-}
17−{-# LANGUAGE MultiParamTypeClasses #-}
18{-# LANGUAGE OverloadedStrings #-}
15{-# LANGUAGE OverloadedStrings #-}
19{-# LANGUAGE PackageImports #-}
16{-# LANGUAGE PackageImports #-}
20{-# LANGUAGE TemplateHaskell #-}
17{-# LANGUAGE TemplateHaskell #-}
21−{-# LANGUAGE TupleSections #-}
22
18
23module Language.PureScript.Ide
19module Language.PureScript.Ide
24 ( handleCommand
20 ( handleCommand
src/Language/PureScript/Ide/CaseSplit.hs−6
@@ -12,14 +12,8 @@
12-- Casesplitting and adding function clauses
12-- Casesplitting and adding function clauses
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−{-# LANGUAGE ConstraintKinds #-}
16−{-# LANGUAGE DataKinds #-}
17−{-# LANGUAGE FlexibleContexts #-}
18−{-# LANGUAGE LambdaCase #-}
19−{-# LANGUAGE MultiParamTypeClasses #-}
20{-# LANGUAGE OverloadedStrings #-}
15{-# LANGUAGE OverloadedStrings #-}
21{-# LANGUAGE PackageImports #-}
16{-# LANGUAGE PackageImports #-}
22−{-# LANGUAGE RecordWildCards #-}
23
17
24module Language.PureScript.Ide.CaseSplit
18module Language.PureScript.Ide.CaseSplit
25 ( WildcardAnnotations()
19 ( WildcardAnnotations()
src/Language/PureScript/Ide/Command.hs−2
@@ -12,9 +12,7 @@
12-- Datatypes for the commands psc-ide accepts
12-- Datatypes for the commands psc-ide accepts
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−{-# LANGUAGE MultiParamTypeClasses #-}
16{-# LANGUAGE OverloadedStrings #-}
15{-# LANGUAGE OverloadedStrings #-}
17−{-# LANGUAGE ScopedTypeVariables #-}
18
16
19module Language.PureScript.Ide.Command where
17module Language.PureScript.Ide.Command where
20
18
src/Language/PureScript/Ide/Error.hs+1
@@ -17,6 +17,7 @@ module Language.PureScript.Ide.Error
17 (ErrorMsg, PscIdeError(..), textError)
17 (ErrorMsg, PscIdeError(..), textError)
18 where
18 where
19
19
20+import Prelude.Compat
20import Data.Aeson
21import Data.Aeson
21import Data.Monoid
22import Data.Monoid
22import Data.Text (Text, pack)
23import Data.Text (Text, pack)
src/Language/PureScript/Ide/Externs.hs−4
@@ -12,11 +12,7 @@
12-- Handles externs files for psc-ide
12-- Handles externs files for psc-ide
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−{-# LANGUAGE FlexibleContexts #-}
16−{-# LANGUAGE MultiParamTypeClasses #-}
17{-# LANGUAGE OverloadedStrings #-}
15{-# LANGUAGE OverloadedStrings #-}
18−{-# LANGUAGE RecordWildCards #-}
19−{-# LANGUAGE ScopedTypeVariables #-}
20
16
21module Language.PureScript.Ide.Externs
17module Language.PureScript.Ide.Externs
22 ( ExternDecl(..),
18 ( ExternDecl(..),
src/Language/PureScript/Ide/Filter.hs−1
@@ -14,7 +14,6 @@
14
14
15{-# LANGUAGE GeneralizedNewtypeDeriving #-}
15{-# LANGUAGE GeneralizedNewtypeDeriving #-}
16{-# LANGUAGE OverloadedStrings #-}
16{-# LANGUAGE OverloadedStrings #-}
17−{-# LANGUAGE ScopedTypeVariables #-}
18
17
19module Language.PureScript.Ide.Filter
18module Language.PureScript.Ide.Filter
20 ( Filter
19 ( Filter
src/Language/PureScript/Ide/Imports.hs+1−4
@@ -12,10 +12,6 @@
12-- Provides functionality to manage imports
12-- Provides functionality to manage imports
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−{-# LANGUAGE ConstraintKinds #-}
16−{-# LANGUAGE FlexibleContexts #-}
17−{-# LANGUAGE LambdaCase #-}
18−{-# LANGUAGE MultiParamTypeClasses #-}
19{-# LANGUAGE OverloadedStrings #-}
15{-# LANGUAGE OverloadedStrings #-}
20{-# LANGUAGE PackageImports #-}
16{-# LANGUAGE PackageImports #-}
21
17
@@ -34,6 +30,7 @@ module Language.PureScript.Ide.Imports
34 )
30 )
35 where
31 where
36
32
33+import Prelude.Compat
37import Control.Applicative ((<|>))
34import Control.Applicative ((<|>))
38import Control.Monad.Error.Class
35import Control.Monad.Error.Class
39import Control.Monad.IO.Class
36import Control.Monad.IO.Class
src/Language/PureScript/Ide/Matcher.hs−1
@@ -14,7 +14,6 @@
14
14
15{-# LANGUAGE GeneralizedNewtypeDeriving #-}
15{-# LANGUAGE GeneralizedNewtypeDeriving #-}
16{-# LANGUAGE OverloadedStrings #-}
16{-# LANGUAGE OverloadedStrings #-}
17−{-# LANGUAGE ScopedTypeVariables #-}
18
17
19module Language.PureScript.Ide.Matcher
18module Language.PureScript.Ide.Matcher
20 ( Matcher
19 ( Matcher
src/Language/PureScript/Ide/Pursuit.hs−1
@@ -13,7 +13,6 @@
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15{-# LANGUAGE OverloadedStrings #-}
15{-# LANGUAGE OverloadedStrings #-}
16−{-# LANGUAGE ScopedTypeVariables #-}
17
16
18module Language.PureScript.Ide.Pursuit where
17module Language.PureScript.Ide.Pursuit where
19
18
src/Language/PureScript/Ide/Rebuild.hs+2−5
@@ -1,13 +1,10 @@
1−{-# LANGUAGE ConstraintKinds #-}
2−{-# LANGUAGE FlexibleContexts #-}
3−{-# LANGUAGE MultiParamTypeClasses #-}
4{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
5{-# LANGUAGE PackageImports #-}
2{-# LANGUAGE PackageImports #-}
6−{-# LANGUAGE RecordWildCards #-}
7−{-# LANGUAGE TupleSections #-}
8
3
9module Language.PureScript.Ide.Rebuild where
4module Language.PureScript.Ide.Rebuild where
10
5
6+import Prelude.Compat
7+
11import Language.PureScript.Ide.Error
8import Language.PureScript.Ide.Error
12import Language.PureScript.Ide.State
9import Language.PureScript.Ide.State
13import Language.PureScript.Ide.Types
10import Language.PureScript.Ide.Types
src/Language/PureScript/Ide/Reexports.hs−2
@@ -14,8 +14,6 @@
14-----------------------------------------------------------------------------
14-----------------------------------------------------------------------------
15
15
16{-# LANGUAGE OverloadedStrings #-}
16{-# LANGUAGE OverloadedStrings #-}
17−{-# LANGUAGE PatternGuards #-}
18−{-# LANGUAGE TupleSections #-}
19
17
20module Language.PureScript.Ide.Reexports where
18module Language.PureScript.Ide.Reexports where
21
19
src/Language/PureScript/Ide/SourceFile.hs−2
@@ -12,8 +12,6 @@
12-- Getting declarations from PureScript sourcefiles
12-- Getting declarations from PureScript sourcefiles
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−{-# LANGUAGE FlexibleContexts #-}
16−{-# LANGUAGE MultiParamTypeClasses #-}
17{-# LANGUAGE OverloadedStrings #-}
15{-# LANGUAGE OverloadedStrings #-}
18
16
19module Language.PureScript.Ide.SourceFile where
17module Language.PureScript.Ide.SourceFile where
src/Language/PureScript/Ide/State.hs−4
@@ -12,13 +12,9 @@
12-- Functions to access psc-ide's state
12-- Functions to access psc-ide's state
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−{-# LANGUAGE ConstraintKinds #-}
16−{-# LANGUAGE FlexibleContexts #-}
17−{-# LANGUAGE MultiParamTypeClasses #-}
18{-# LANGUAGE OverloadedStrings #-}
15{-# LANGUAGE OverloadedStrings #-}
19{-# LANGUAGE PackageImports #-}
16{-# LANGUAGE PackageImports #-}
20{-# LANGUAGE TemplateHaskell #-}
17{-# LANGUAGE TemplateHaskell #-}
21−{-# LANGUAGE TupleSections #-}
22
18
23module Language.PureScript.Ide.State where
19module Language.PureScript.Ide.State where
24
20
src/Language/PureScript/Ide/Types.hs−4
@@ -12,11 +12,7 @@
12-- Type definitions for psc-ide
12-- Type definitions for psc-ide
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−{-# LANGUAGE ConstraintKinds #-}
16−{-# LANGUAGE FlexibleContexts #-}
17−{-# LANGUAGE GeneralizedNewtypeDeriving #-}
18{-# LANGUAGE OverloadedStrings #-}
15{-# LANGUAGE OverloadedStrings #-}
19−{-# LANGUAGE ScopedTypeVariables #-}
20
16
21module Language.PureScript.Ide.Types where
17module Language.PureScript.Ide.Types where
22
18
src/Language/PureScript/Ide/Util.hs+1
@@ -16,6 +16,7 @@
16
16
17module Language.PureScript.Ide.Util where
17module Language.PureScript.Ide.Util where
18
18
19+import Prelude.Compat
19import Data.Aeson
20import Data.Aeson
20import Data.Text (Text)
21import Data.Text (Text)
21import qualified Data.Text as T
22import qualified Data.Text as T
src/Language/PureScript/Kinds.hs−1
@@ -2,7 +2,6 @@
2
2
3module Language.PureScript.Kinds where
3module Language.PureScript.Kinds where
4
4
5−import Prelude ()
6import Prelude.Compat
5import Prelude.Compat
7
6
8import qualified Data.Aeson.TH as A
7import qualified Data.Aeson.TH as A
src/Language/PureScript/Linter.hs+5−11
@@ -1,30 +1,24 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−{-# LANGUAGE PatternGuards #-}
4−
5-- |
1-- |
6-- This module implements a simple linting pass on the PureScript AST.
2-- This module implements a simple linting pass on the PureScript AST.
7--
3--
8module Language.PureScript.Linter (lint, module L) where
4module Language.PureScript.Linter (lint, module L) where
9
5
10−import Prelude ()
11import Prelude.Compat
6import Prelude.Compat
12
7
8+import Control.Monad.Writer.Class
9+
13import Data.List (nub, (\\))
10import Data.List (nub, (\\))
14import Data.Maybe (mapMaybe)
11import Data.Maybe (mapMaybe)
15import Data.Monoid
12import Data.Monoid
16−
17import qualified Data.Set as S
13import qualified Data.Set as S
18
14
19−import Control.Monad.Writer.Class
20−
21−import Language.PureScript.Crash
22import Language.PureScript.AST
15import Language.PureScript.AST
23−import Language.PureScript.Names
16+import Language.PureScript.Crash
24import Language.PureScript.Errors
17import Language.PureScript.Errors
25−import Language.PureScript.Types
26import Language.PureScript.Linter.Exhaustive as L
18import Language.PureScript.Linter.Exhaustive as L
27import Language.PureScript.Linter.Imports as L
19import Language.PureScript.Linter.Imports as L
20+import Language.PureScript.Names
21+import Language.PureScript.Types
28
22
29-- | Lint the PureScript AST.
23-- | Lint the PureScript AST.
30-- |
24-- |
src/Language/PureScript/Linter/Exhaustive.hs+11−15
@@ -1,6 +1,3 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−
4-- |
1-- |
5-- Module for exhaustivity checking over pattern matching definitions
2-- Module for exhaustivity checking over pattern matching definitions
6-- The algorithm analyses the clauses of a definition one by one from top
3-- The algorithm analyses the clauses of a definition one by one from top
@@ -11,31 +8,30 @@ module Language.PureScript.Linter.Exhaustive
11 ( checkExhaustiveExpr
8 ( checkExhaustiveExpr
12 ) where
9 ) where
13
10
14−import Prelude ()
15import Prelude.Compat
11import Prelude.Compat
16
12
17−import qualified Data.Map as M
18−import Data.Maybe (fromMaybe)
19−import Data.List (foldl', sortBy, nub)
20−import Data.Function (on)
21−
22−import Control.Monad (unless)
23import Control.Applicative
13import Control.Applicative
24import Control.Arrow (first, second)
14import Control.Arrow (first, second)
15+import Control.Monad (unless)
25import Control.Monad.Writer.Class
16import Control.Monad.Writer.Class
26
17
27−import Language.PureScript.Crash
18+import Data.Function (on)
19+import Data.List (foldl', sortBy, nub)
20+import Data.Maybe (fromMaybe)
28−import qualified Language.PureScript.Constants as C
21+import qualified Data.Map as M
22+
29import Language.PureScript.AST.Binders
23import Language.PureScript.AST.Binders
30−import Language.PureScript.AST.Literals
31import Language.PureScript.AST.Declarations
24import Language.PureScript.AST.Declarations
25+import Language.PureScript.AST.Literals
26+import Language.PureScript.Crash
32import Language.PureScript.Environment
27import Language.PureScript.Environment
33−import Language.PureScript.Names as P
28+import Language.PureScript.Errors
34import Language.PureScript.Kinds
29import Language.PureScript.Kinds
30+import Language.PureScript.Names as P
35import Language.PureScript.Pretty.Values (prettyPrintBinderAtom)
31import Language.PureScript.Pretty.Values (prettyPrintBinderAtom)
36import Language.PureScript.Traversals
32import Language.PureScript.Traversals
37import Language.PureScript.Types as P
33import Language.PureScript.Types as P
38−import Language.PureScript.Errors
34+import qualified Language.PureScript.Constants as C
39
35
40-- | There are two modes of failure for the redundancy check:
36-- | There are two modes of failure for the redundancy check:
41--
37--
src/Language/PureScript/Linter/Imports.hs+1−7
@@ -1,13 +1,9 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
2−{-# LANGUAGE FlexibleContexts #-}
3−
4module Language.PureScript.Linter.Imports
1module Language.PureScript.Linter.Imports
5 ( lintImports
2 ( lintImports
6 , Name(..)
3 , Name(..)
7 , UsedImports()
4 , UsedImports()
8 ) where
5 ) where
9
6
10−import Prelude ()
11import Prelude.Compat
7import Prelude.Compat
12
8
13import Control.Monad (unless, when)
9import Control.Monad (unless, when)
@@ -23,12 +19,10 @@ import qualified Data.Map as M
23import Language.PureScript.AST.Declarations
19import Language.PureScript.AST.Declarations
24import Language.PureScript.AST.SourcePos
20import Language.PureScript.AST.SourcePos
25import Language.PureScript.Crash
21import Language.PureScript.Crash
26−import Language.PureScript.Names as P
27−
28import Language.PureScript.Errors
22import Language.PureScript.Errors
23+import Language.PureScript.Names as P
29import Language.PureScript.Sugar.Names.Env
24import Language.PureScript.Sugar.Names.Env
30import Language.PureScript.Sugar.Names.Imports
25import Language.PureScript.Sugar.Names.Imports
31−
32import qualified Language.PureScript.Constants as C
26import qualified Language.PureScript.Constants as C
33
27
34-- | Imported name used in some type or expression.
28-- | Imported name used in some type or expression.
src/Language/PureScript/Make.hs+27−37
@@ -1,10 +1,4 @@
1−{-# LANGUAGE FlexibleContexts #-}
2{-# LANGUAGE GeneralizedNewtypeDeriving #-}
1{-# LANGUAGE GeneralizedNewtypeDeriving #-}
3−{-# LANGUAGE TupleSections #-}
4−{-# LANGUAGE RankNTypes #-}
5−{-# LANGUAGE RecordWildCards #-}
6−{-# LANGUAGE ScopedTypeVariables #-}
7−{-# LANGUAGE MultiParamTypeClasses #-}
8{-# LANGUAGE TypeFamilies #-}
2{-# LANGUAGE TypeFamilies #-}
9
3
10module Language.PureScript.Make
4module Language.PureScript.Make
@@ -23,56 +17,41 @@ module Language.PureScript.Make
23 , buildMakeActions
17 , buildMakeActions
24 ) where
18 ) where
25
19
26−import Prelude ()
27import Prelude.Compat
20import Prelude.Compat
28
21
29import Control.Applicative ((<|>))
22import Control.Applicative ((<|>))
23+import Control.Concurrent.Lifted as C
30import Control.Monad hiding (sequence)
24import Control.Monad hiding (sequence)
25+import Control.Monad.Base (MonadBase(..))
31import Control.Monad.Error.Class (MonadError(..))
26import Control.Monad.Error.Class (MonadError(..))
32−import Control.Monad.Writer.Class (MonadWriter(..))
33−import Control.Monad.Trans.Class (MonadTrans(..))
34−import Control.Monad.Trans.Except
35import Control.Monad.IO.Class
27import Control.Monad.IO.Class
36−import Control.Monad.Reader (MonadReader(..), ReaderT(..), asks)
37import Control.Monad.Logger
28import Control.Monad.Logger
29+import Control.Monad.Reader (MonadReader(..), ReaderT(..), asks)
38import Control.Monad.Supply
30import Control.Monad.Supply
39−import Control.Monad.Base (MonadBase(..))
31+import Control.Monad.Trans.Class (MonadTrans(..))
40import Control.Monad.Trans.Control (MonadBaseControl(..))
32import Control.Monad.Trans.Control (MonadBaseControl(..))
33+import Control.Monad.Trans.Except
34+import Control.Monad.Writer.Class (MonadWriter(..))
41
35
42−import Control.Concurrent.Lifted as C
36+import Data.Aeson (encode, decode)
43−
37+import Data.Either (partitionEithers)
38+import Data.Foldable (for_)
44import Data.List (foldl', sort)
39import Data.List (foldl', sort)
45import Data.Maybe (fromMaybe, catMaybes)
40import Data.Maybe (fromMaybe, catMaybes)
46−import Data.Either (partitionEithers)
47−import Data.Time.Clock
48import Data.String (fromString)
41import Data.String (fromString)
49−import Data.Foldable (for_)
42+import Data.Time.Clock
50import Data.Traversable (for)
43import Data.Traversable (for)
51import Data.Version (showVersion)
44import Data.Version (showVersion)
52−import Data.Aeson (encode, decode)
53import qualified Data.ByteString.Lazy as B
45import qualified Data.ByteString.Lazy as B
54import qualified Data.ByteString.UTF8 as BU8
46import qualified Data.ByteString.UTF8 as BU8
55−import qualified Data.Set as S
56import qualified Data.Map as M
47import qualified Data.Map as M
48+import qualified Data.Set as S
57
49
58−import qualified Text.Parsec as Parsec
59−
60−import SourceMap.Types
61−import SourceMap
62−
63−import System.Directory
64− (doesFileExist, getModificationTime, createDirectoryIfMissing, getCurrentDirectory)
65−import System.FilePath ((</>), takeDirectory, makeRelative, splitPath, normalise)
66−import System.IO.Error (tryIOError)
67−import System.IO.UTF8 (readUTF8File, writeUTF8File)
68−
69−import qualified Language.JavaScript.Parser as JS
70−
71−import Language.PureScript.Crash
72import Language.PureScript.AST
50import Language.PureScript.AST
73−import Language.PureScript.Externs
51+import Language.PureScript.Crash
74import Language.PureScript.Environment
52import Language.PureScript.Environment
75import Language.PureScript.Errors
53import Language.PureScript.Errors
54+import Language.PureScript.Externs
76import Language.PureScript.Linter
55import Language.PureScript.Linter
77import Language.PureScript.ModuleDependencies
56import Language.PureScript.ModuleDependencies
78import Language.PureScript.Names
57import Language.PureScript.Names
@@ -82,14 +61,25 @@ import Language.PureScript.Pretty.Common(SMap(..))
82import Language.PureScript.Renamer
61import Language.PureScript.Renamer
83import Language.PureScript.Sugar
62import Language.PureScript.Sugar
84import Language.PureScript.TypeChecker
63import Language.PureScript.TypeChecker
85−import qualified Language.PureScript.Constants as C
64+import qualified Language.JavaScript.Parser as JS
86import qualified Language.PureScript.Bundle as Bundle
65import qualified Language.PureScript.Bundle as Bundle
87−import qualified Language.PureScript.Parser as PSParser
88−
89import qualified Language.PureScript.CodeGen.JS as J
66import qualified Language.PureScript.CodeGen.JS as J
67+import qualified Language.PureScript.Constants as C
90import qualified Language.PureScript.CoreFn as CF
68import qualified Language.PureScript.CoreFn as CF
69+import qualified Language.PureScript.Parser as PSParser
70+
91import qualified Paths_purescript as Paths
71import qualified Paths_purescript as Paths
92
72
73+import SourceMap
74+import SourceMap.Types
75+
76+import System.Directory (doesFileExist, getModificationTime, createDirectoryIfMissing, getCurrentDirectory)
77+import System.FilePath ((</>), takeDirectory, makeRelative, splitPath, normalise)
78+import System.IO.Error (tryIOError)
79+import System.IO.UTF8 (readUTF8File, writeUTF8File)
80+
81+import qualified Text.Parsec as Parsec
82+
93-- | Progress messages from the make process
83-- | Progress messages from the make process
94data ProgressMessage
84data ProgressMessage
95 = CompilingModule ModuleName
85 = CompilingModule ModuleName
src/Language/PureScript/ModuleDependencies.hs+8−8
@@ -1,12 +1,12 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−
3-- |
1-- |
4-- Provides the ability to sort modules based on module dependencies
2-- Provides the ability to sort modules based on module dependencies
5--
3--
6−module Language.PureScript.ModuleDependencies (
4+module Language.PureScript.ModuleDependencies
7− sortModules,
5+ ( sortModules
8− ModuleGraph
6+ , ModuleGraph
9−) where
7+ ) where
8+
9+import Prelude.Compat
10
10
11import Control.Monad.Error.Class (MonadError(..))
11import Control.Monad.Error.Class (MonadError(..))
12
12
@@ -14,11 +14,11 @@ import Data.Graph
14import Data.List (nub)
14import Data.List (nub)
15import Data.Maybe (fromMaybe)
15import Data.Maybe (fromMaybe)
16
16
17−import Language.PureScript.Crash
18import Language.PureScript.AST
17import Language.PureScript.AST
18+import Language.PureScript.Crash
19+import Language.PureScript.Errors
19import Language.PureScript.Names
20import Language.PureScript.Names
20import Language.PureScript.Types
21import Language.PureScript.Types
21−import Language.PureScript.Errors
22
22
23-- | A list of modules with their transitive dependencies
23-- | A list of modules with their transitive dependencies
24type ModuleGraph = [(ModuleName, [ModuleName])]
24type ModuleGraph = [(ModuleName, [ModuleName])]
src/Language/PureScript/Names.hs+3−4
@@ -1,19 +1,18 @@
1−{-# LANGUAGE DeriveFunctor #-}
2{-# LANGUAGE TemplateHaskell #-}
1{-# LANGUAGE TemplateHaskell #-}
3−{-# LANGUAGE EmptyDataDecls #-}
4−{-# LANGUAGE KindSignatures #-}
5
2
6-- |
3-- |
7-- Data types for names
4-- Data types for names
8--
5--
9module Language.PureScript.Names where
6module Language.PureScript.Names where
10
7
8+import Prelude.Compat
9+
11import Control.Monad (liftM)
10import Control.Monad (liftM)
12import Control.Monad.Supply.Class
11import Control.Monad.Supply.Class
13
12
14−import Data.List
15import Data.Aeson
13import Data.Aeson
16import Data.Aeson.TH
14import Data.Aeson.TH
15+import Data.List
17
16
18-- |
17-- |
19-- Names for value identifiers
18-- Names for value identifiers
src/Language/PureScript/Options.hs+2−12
@@ -1,20 +1,10 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.Options
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- The data type of compiler options
2-- The data type of compiler options
13--
3--
14−-----------------------------------------------------------------------------
15−
16module Language.PureScript.Options where
4module Language.PureScript.Options where
17
5
6+import Prelude.Compat
7+
18-- |
8-- |
19-- The data type of compiler options
9-- The data type of compiler options
20--
10--
src/Language/PureScript/Parser.hs+24−36
@@ -1,36 +1,24 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.Parser
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11−-- |
1+-- |
12−-- A collection of parsers for core data types:
2+-- A collection of parsers for core data types:
13−--
3+--
14−-- [@Language.PureScript.Parser.Kinds@] Parser for kinds
4+-- [@Language.PureScript.Parser.Kinds@] Parser for kinds
15−--
5+--
16−-- [@Language.PureScript.Parser.Values@] Parser for values
6+-- [@Language.PureScript.Parser.Values@] Parser for values
17−--
7+--
18−-- [@Language.PureScript.Parser.Types@] Parser for types
8+-- [@Language.PureScript.Parser.Types@] Parser for types
19−--
9+--
20−-- [@Language.PureScript.Parser.Declaration@] Parsers for declarations and modules
10+-- [@Language.PureScript.Parser.Declaration@] Parsers for declarations and modules
21−--
11+--
22−-- [@Language.PureScript.Parser.State@] Parser state, including indentation
12+-- [@Language.PureScript.Parser.State@] Parser state, including indentation
23−--
13+--
24−-- [@Language.PureScript.Parser.Common@] Common parsing utility functions
14+-- [@Language.PureScript.Parser.Common@] Common parsing utility functions
25−--
15+--
26−-----------------------------------------------------------------------------
27−
28−module Language.PureScript.Parser (module P) where
16+module Language.PureScript.Parser (module P) where
29−
17+
30−import Language.PureScript.Parser.Common as P
18+import Language.PureScript.Parser.Common as P
31−import Language.PureScript.Parser.Types as P
19+import Language.PureScript.Parser.Declarations as P
32−import Language.PureScript.Parser.State as P
33−import Language.PureScript.Parser.Kinds as P
34−import Language.PureScript.Parser.Lexer as P
35−import Language.PureScript.Parser.Declarations as P
36−import Language.PureScript.Parser.JS as P
20+import Language.PureScript.Parser.JS as P
21+import Language.PureScript.Parser.Kinds as P
22+import Language.PureScript.Parser.Lexer as P
23+import Language.PureScript.Parser.State as P
24+import Language.PureScript.Parser.Types as P
src/Language/PureScript/Parser/Common.hs+5−6
@@ -1,19 +1,18 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−
3-- |
1-- |
4−-- Constants, and utility functions to be used when parsing
2+-- Constants and utility functions to be used when parsing
5--
3--
6module Language.PureScript.Parser.Common where
4module Language.PureScript.Parser.Common where
7
5
6+import Prelude.Compat
7+
8import Control.Applicative
8import Control.Applicative
9import Control.Monad (guard)
9import Control.Monad (guard)
10
10
11+import Language.PureScript.AST.SourcePos
11import Language.PureScript.Comments
12import Language.PureScript.Comments
13+import Language.PureScript.Names
12import Language.PureScript.Parser.Lexer
14import Language.PureScript.Parser.Lexer
13import Language.PureScript.Parser.State
15import Language.PureScript.Parser.State
14−import Language.PureScript.Names
15−
16−import Language.PureScript.AST.SourcePos
17
16
18import qualified Text.Parsec as P
17import qualified Text.Parsec as P
19
18
src/Language/PureScript/Parser/Declarations.hs+13−17
@@ -1,22 +1,18 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−{-# LANGUAGE TupleSections #-}
4−
5-- |
1-- |
6-- Parsers for module definitions and declarations
2-- Parsers for module definitions and declarations
7--
3--
8−module Language.PureScript.Parser.Declarations (
4+module Language.PureScript.Parser.Declarations
9− parseDeclaration,
5+ ( parseDeclaration
10− parseModule,
6+ , parseModule
11− parseModules,
7+ , parseModules
12− parseModulesFromFiles,
8+ , parseModulesFromFiles
13− parseValue,
9+ , parseValue
14− parseGuard,
10+ , parseGuard
15− parseBinder,
11+ , parseBinder
16− parseBinderNoParens,
12+ , parseBinderNoParens
17− parseImportDeclaration',
13+ , parseImportDeclaration'
18− parseLocalDeclaration
14+ , parseLocalDeclaration
19−) where
15+ ) where
20
16
21import Prelude hiding (lex)
17import Prelude hiding (lex)
22
18
@@ -541,7 +537,7 @@ parseBinderAtom = P.choice
541 , parseArrayBinder
537 , parseArrayBinder
542 , ParensInBinder <$> parens parseBinder
538 , ParensInBinder <$> parens parseBinder
543 ] P.<?> "binder"
539 ] P.<?> "binder"
544−
540+
545-- |
541-- |
546-- Parse a binder as it would appear in a top level declaration
542-- Parse a binder as it would appear in a top level declaration
547--
543--
src/Language/PureScript/Parser/JS.hs+4−18
@@ -1,37 +1,23 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Foreign
4−-- Copyright : (c) 2013-14 Phil Freeman, (c) 2014 Gary Burgess, and other contributors
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>, Gary Burgess <gary.burgess@gmail.com>
8−-- Stability : experimental
9−-- Portability :
10−--
11−-- |
12−--
13−-----------------------------------------------------------------------------
14−
15−{-# LANGUAGE FlexibleContexts #-}
16−
17module Language.PureScript.Parser.JS
1module Language.PureScript.Parser.JS
18 ( ForeignJS()
2 ( ForeignJS()
19 , parseForeignModulesFromFiles
3 , parseForeignModulesFromFiles
20 ) where
4 ) where
21
5
22−import Prelude ()
23import Prelude.Compat hiding (lex)
6import Prelude.Compat hiding (lex)
24
7
25import Control.Monad (forM_, when, msum)
8import Control.Monad (forM_, when, msum)
26import Control.Monad.Error.Class (MonadError(..))
9import Control.Monad.Error.Class (MonadError(..))
27import Control.Monad.Writer.Class (MonadWriter(..))
10import Control.Monad.Writer.Class (MonadWriter(..))
11+
28import Data.Function (on)
12import Data.Function (on)
29import Data.List (sortBy, groupBy)
13import Data.List (sortBy, groupBy)
14+import qualified Data.Map as M
15+
30import Language.PureScript.Errors
16import Language.PureScript.Errors
31import Language.PureScript.Names
17import Language.PureScript.Names
32import Language.PureScript.Parser.Common
18import Language.PureScript.Parser.Common
33import Language.PureScript.Parser.Lexer
19import Language.PureScript.Parser.Lexer
34−import qualified Data.Map as M
20+
35import qualified Text.Parsec as PS
21import qualified Text.Parsec as PS
36
22
37type ForeignJS = String
23type ForeignJS = String
src/Language/PureScript/Parser/Kinds.hs+2−16
@@ -1,28 +1,14 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.Parser.Kinds
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- A parser for kinds
2-- A parser for kinds
13--
3--
14−-----------------------------------------------------------------------------
4+module Language.PureScript.Parser.Kinds (parseKind) where
15
5
16−module Language.PureScript.Parser.Kinds (
17− parseKind
18−) where
19−
20−import Prelude ()
21import Prelude.Compat
6import Prelude.Compat
22
7
23import Language.PureScript.Kinds
8import Language.PureScript.Kinds
24import Language.PureScript.Parser.Common
9import Language.PureScript.Parser.Common
25import Language.PureScript.Parser.Lexer
10import Language.PureScript.Parser.Lexer
11+
26import qualified Text.Parsec as P
12import qualified Text.Parsec as P
27import qualified Text.Parsec.Expr as P
13import qualified Text.Parsec.Expr as P
28
14
src/Language/PureScript/Parser/Lexer.hs+4−19
@@ -1,20 +1,6 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.Parser.Lexer
4−-- Copyright : (c) Phil Freeman 2014
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- The first step in the parsing process - turns source code into a list of lexemes
2-- The first step in the parsing process - turns source code into a list of lexemes
13--
3--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE TupleSections #-}
17−
18module Language.PureScript.Parser.Lexer
4module Language.PureScript.Parser.Lexer
19 ( PositionedToken(..)
5 ( PositionedToken(..)
20 , Token()
6 , Token()
@@ -75,15 +61,14 @@ module Language.PureScript.Parser.Lexer
75
61
76import Prelude hiding (lex)
62import Prelude hiding (lex)
77
63
78−import Data.Char (isSpace, isAscii, isSymbol, isAlphaNum)
64+import Control.Applicative
79−
80import Control.Monad (void, guard)
65import Control.Monad (void, guard)
81−import Data.Functor.Identity
82
66
83−import Control.Applicative
67+import Data.Char (isSpace, isAscii, isSymbol, isAlphaNum)
68+import Data.Functor.Identity
84
69
85−import Language.PureScript.Parser.State
86import Language.PureScript.Comments
70import Language.PureScript.Comments
71+import Language.PureScript.Parser.State
87
72
88import qualified Text.Parsec as P
73import qualified Text.Parsec as P
89import qualified Text.Parsec.Token as PT
74import qualified Text.Parsec.Token as PT
src/Language/PureScript/Parser/State.hs+2−12
@@ -1,20 +1,10 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.Parser.State
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- State for the parser monad
2-- State for the parser monad
13--
3--
14−-----------------------------------------------------------------------------
15−
16module Language.PureScript.Parser.State where
4module Language.PureScript.Parser.State where
17
5
6+import Prelude.Compat
7+
18import qualified Text.Parsec as P
8import qualified Text.Parsec as P
19
9
20-- |
10-- |
src/Language/PureScript/Parser/Types.hs+11−10
@@ -1,21 +1,22 @@
1−module Language.PureScript.Parser.Types (
1+module Language.PureScript.Parser.Types
2− parseType,
2+ ( parseType
3− parsePolyType,
3+ , parsePolyType
4− noWildcards,
4+ , noWildcards
5− parseTypeAtom
5+ , parseTypeAtom
6−) where
6+ ) where
7+
8+import Prelude.Compat
7
9
8import Control.Applicative
10import Control.Applicative
9import Control.Monad (when, unless)
11import Control.Monad (when, unless)
10
12
13+import Language.PureScript.AST.SourcePos
14+import Language.PureScript.Environment
11import Language.PureScript.Names
15import Language.PureScript.Names
12−import Language.PureScript.Types
13import Language.PureScript.Parser.Common
16import Language.PureScript.Parser.Common
14import Language.PureScript.Parser.Kinds
17import Language.PureScript.Parser.Kinds
15import Language.PureScript.Parser.Lexer
18import Language.PureScript.Parser.Lexer
16−import Language.PureScript.Environment
19+import Language.PureScript.Types
17−
18−import Language.PureScript.AST.SourcePos
19
20
20import qualified Text.Parsec as P
21import qualified Text.Parsec as P
21import qualified Text.Parsec.Expr as P
22import qualified Text.Parsec.Expr as P
src/Language/PureScript/Pretty.hs+2−14
@@ -1,13 +1,3 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.Pretty
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- A collection of pretty printers for core data types:
2-- A collection of pretty printers for core data types:
13--
3--
@@ -19,11 +9,9 @@
19--
9--
20-- [@Language.PureScript.Pretty.JS@] Pretty printer for values, used for code generation
10-- [@Language.PureScript.Pretty.JS@] Pretty printer for values, used for code generation
21--
11--
22−-----------------------------------------------------------------------------
23−
24module Language.PureScript.Pretty (module P) where
12module Language.PureScript.Pretty (module P) where
25
13
14+import Language.PureScript.Pretty.JS as P
26import Language.PureScript.Pretty.Kinds as P
15import Language.PureScript.Pretty.Kinds as P
27−import Language.PureScript.Pretty.Values as P
28import Language.PureScript.Pretty.Types as P
16import Language.PureScript.Pretty.Types as P
29−import Language.PureScript.Pretty.JS as P
17+import Language.PureScript.Pretty.Values as P
src/Language/PureScript/Pretty/Common.hs+4−16
@@ -1,30 +1,18 @@
1−-----------------------------------------------------------------------------
1+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
2−--
2+
3−-- Module : Language.PureScript.Pretty.Common
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
3-- |
12-- Common pretty-printing utility functions
4-- Common pretty-printing utility functions
13--
5--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE GeneralizedNewtypeDeriving #-}
17−
18module Language.PureScript.Pretty.Common where
6module Language.PureScript.Pretty.Common where
19
7
20−import Prelude ()
21import Prelude.Compat
8import Prelude.Compat
22
9
23import Control.Monad.State (StateT, modify, get)
10import Control.Monad.State (StateT, modify, get)
11+
24import Data.List (elemIndices, intersperse)
12import Data.List (elemIndices, intersperse)
25
13
26−import Language.PureScript.Parser.Lexer (reservedPsNames, isUnquotedKey)
27import Language.PureScript.AST (SourcePos(..), SourceSpan(..))
14import Language.PureScript.AST (SourcePos(..), SourceSpan(..))
15+import Language.PureScript.Parser.Lexer (reservedPsNames, isUnquotedKey)
28
16
29import Text.PrettyPrint.Boxes
17import Text.PrettyPrint.Boxes
30
18
src/Language/PureScript/Pretty/JS.hs+10−25
@@ -1,45 +1,30 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.Pretty.JS
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- Pretty printer for the Javascript AST
2-- Pretty printer for the Javascript AST
13--
3--
14−-----------------------------------------------------------------------------
4+module Language.PureScript.Pretty.JS
5+ ( prettyPrintJS
6+ , prettyPrintJSWithSourceMaps
7+ ) where
15
8
16−module Language.PureScript.Pretty.JS (
17− prettyPrintJS, prettyPrintJSWithSourceMaps
18−) where
19−
20−import Prelude ()
21import Prelude.Compat
9import Prelude.Compat
22
10
23−import Data.Maybe (fromMaybe)
24−
25import Control.Arrow ((<+>))
11import Control.Arrow ((<+>))
26import Control.Monad.State hiding (sequence)
12import Control.Monad.State hiding (sequence)
27import Control.PatternArrows
13import Control.PatternArrows
28import qualified Control.Arrow as A
14import qualified Control.Arrow as A
29
15
16+import Data.Maybe (fromMaybe)
17+import Data.Monoid
18+
30−import Language.PureScript.Crash
19+import Language.PureScript.AST (SourceSpan(..))
31import Language.PureScript.CodeGen.JS.AST
20import Language.PureScript.CodeGen.JS.AST
32import Language.PureScript.CodeGen.JS.Common
21import Language.PureScript.CodeGen.JS.Common
33−import Language.PureScript.Pretty.Common
34import Language.PureScript.Comments
22import Language.PureScript.Comments
35−
36−
37−import Language.PureScript.AST (SourceSpan(..))
23+import Language.PureScript.Crash
24+import Language.PureScript.Pretty.Common
38
25
39import Numeric
26import Numeric
40
27
41−import Data.Monoid
42−
43literals :: (Emit gen) => Pattern PrinterState JS gen
28literals :: (Emit gen) => Pattern PrinterState JS gen
44literals = mkPattern' match'
29literals = mkPattern' match'
45 where
30 where
src/Language/PureScript/Pretty/Kinds.hs+10−18
@@ -1,26 +1,16 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.Pretty.Kinds
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- Pretty printer for kinds
2-- Pretty printer for kinds
13--
3--
14−-----------------------------------------------------------------------------
4+module Language.PureScript.Pretty.Kinds
5+ ( prettyPrintKind
6+ ) where
15
7
16−module Language.PureScript.Pretty.Kinds (
8+import Prelude.Compat
17− prettyPrintKind
18−) where
19−
20−import Data.Maybe (fromMaybe)
21
9
22import Control.Arrow (ArrowPlus(..))
10import Control.Arrow (ArrowPlus(..))
23−import Control.PatternArrows
11+import Control.PatternArrows as PA
12+
13+import Data.Maybe (fromMaybe)
24
14
25import Language.PureScript.Crash
15import Language.PureScript.Crash
26import Language.PureScript.Kinds
16import Language.PureScript.Kinds
@@ -48,7 +38,9 @@ funKind = mkPattern match
48
38
49-- | Generate a pretty-printed string representing a Kind
39-- | Generate a pretty-printed string representing a Kind
50prettyPrintKind :: Kind -> String
40prettyPrintKind :: Kind -> String
41+prettyPrintKind
51−prettyPrintKind = fromMaybe (internalError "Incomplete pattern") . pattern matchKind ()
42+ = fromMaybe (internalError "Incomplete pattern")
43+ . PA.pattern matchKind ()
52 where
44 where
53 matchKind :: Pattern () Kind String
45 matchKind :: Pattern () Kind String
54 matchKind = buildPrettyPrinter operators (typeLiterals <+> fmap parens matchKind)
46 matchKind = buildPrettyPrinter operators (typeLiterals <+> fmap parens matchKind)
src/Language/PureScript/Pretty/Types.hs+15−7
@@ -10,18 +10,20 @@ module Language.PureScript.Pretty.Types
10 , prettyPrintRow
10 , prettyPrintRow
11 ) where
11 ) where
12
12
13−import Data.Maybe (fromMaybe)
13+import Prelude.Compat
14
14
15import Control.Arrow ((<+>))
15import Control.Arrow ((<+>))
16−import Control.PatternArrows
16+import Control.PatternArrows as PA
17+
18+import Data.Maybe (fromMaybe)
17
19
18import Language.PureScript.Crash
20import Language.PureScript.Crash
19−import Language.PureScript.Types
21+import Language.PureScript.Environment
20−import Language.PureScript.Names
21import Language.PureScript.Kinds
22import Language.PureScript.Kinds
23+import Language.PureScript.Names
22import Language.PureScript.Pretty.Common
24import Language.PureScript.Pretty.Common
23import Language.PureScript.Pretty.Kinds
25import Language.PureScript.Pretty.Kinds
24−import Language.PureScript.Environment
26+import Language.PureScript.Types
25
27
26import Text.PrettyPrint.Boxes hiding ((<+>))
28import Text.PrettyPrint.Boxes hiding ((<+>))
27
29
@@ -147,14 +149,20 @@ forall_ = mkPattern match
147 match _ = Nothing
149 match _ = Nothing
148
150
149typeAtomAsBox :: Type -> Box
151typeAtomAsBox :: Type -> Box
152+typeAtomAsBox
150−typeAtomAsBox = fromMaybe (internalError "Incomplete pattern") . pattern matchTypeAtom () . insertPlaceholders
153+ = fromMaybe (internalError "Incomplete pattern")
154+ . PA.pattern matchTypeAtom ()
155+ . insertPlaceholders
151
156
152-- | Generate a pretty-printed string representing a Type, as it should appear inside parentheses
157-- | Generate a pretty-printed string representing a Type, as it should appear inside parentheses
153prettyPrintTypeAtom :: Type -> String
158prettyPrintTypeAtom :: Type -> String
154prettyPrintTypeAtom = render . typeAtomAsBox
159prettyPrintTypeAtom = render . typeAtomAsBox
155
160
156typeAsBox :: Type -> Box
161typeAsBox :: Type -> Box
162+typeAsBox
157−typeAsBox = fromMaybe (internalError "Incomplete pattern") . pattern matchType () . insertPlaceholders
163+ = fromMaybe (internalError "Incomplete pattern")
164+ . PA.pattern matchType ()
165+ . insertPlaceholders
158
166
159-- | Generate a pretty-printed string representing a Type
167-- | Generate a pretty-printed string representing a Type
160prettyPrintType :: Type -> String
168prettyPrintType :: Type -> String
src/Language/PureScript/Pretty/Values.hs+8−6
@@ -1,16 +1,18 @@
1-- |
1-- |
2-- Pretty printer for values
2-- Pretty printer for values
3--
3--
4−module Language.PureScript.Pretty.Values (
4+module Language.PureScript.Pretty.Values
5− prettyPrintValue,
5+ ( prettyPrintValue
6− prettyPrintBinder,
6+ , prettyPrintBinder
7− prettyPrintBinderAtom
7+ , prettyPrintBinderAtom
8−) where
8+ ) where
9+
10+import Prelude.Compat
9
11
10import Control.Arrow (second)
12import Control.Arrow (second)
11
13
12−import Language.PureScript.Crash
13import Language.PureScript.AST
14import Language.PureScript.AST
15+import Language.PureScript.Crash
14import Language.PureScript.Names
16import Language.PureScript.Names
15import Language.PureScript.Pretty.Common
17import Language.PureScript.Pretty.Common
16import Language.PureScript.Pretty.Types (typeAsBox, typeAtomAsBox)
18import Language.PureScript.Pretty.Types (typeAsBox, typeAtomAsBox)
src/Language/PureScript/Publish.hs+20−23
@@ -1,7 +1,5 @@
1−{-# LANGUAGE OverloadedStrings #-}
2−{-# LANGUAGE RecordWildCards #-}
3−{-# LANGUAGE TupleSections #-}
4{-# LANGUAGE GeneralizedNewtypeDeriving #-}
1{-# LANGUAGE GeneralizedNewtypeDeriving #-}
2+{-# LANGUAGE OverloadedStrings #-}
5
3
6module Language.PureScript.Publish
4module Language.PureScript.Publish
7 ( preparePackage
5 ( preparePackage
@@ -23,47 +21,46 @@ module Language.PureScript.Publish
23 , getResolvedDependencies
21 , getResolvedDependencies
24 ) where
22 ) where
25
23
26−import Prelude ()
27import Prelude.Compat hiding (userError)
24import Prelude.Compat hiding (userError)
28
25
29−import Data.Maybe
26+import Control.Arrow ((***))
27+import Control.Category ((>>>))
28+import Control.Exception (catch, try)
29+import Control.Monad.Error.Class (MonadError(..))
30+import Control.Monad.Trans.Except
31+import Control.Monad.Trans.Maybe (MaybeT(..), runMaybeT)
32+import Control.Monad.Writer.Strict
33+
34+import Data.Aeson.BetterErrors
30import Data.Char (isSpace)
35import Data.Char (isSpace)
36+import Data.Foldable (traverse_)
37+import Data.Function (on)
31import Data.List (stripPrefix, isSuffixOf, (\\), nubBy)
38import Data.List (stripPrefix, isSuffixOf, (\\), nubBy)
32−import Data.List.Split (splitOn)
33import Data.List.NonEmpty (NonEmpty(..))
39import Data.List.NonEmpty (NonEmpty(..))
40+import Data.List.Split (splitOn)
41+import Data.Maybe
34import Data.Version
42import Data.Version
35−import Data.Function (on)
43+import qualified Data.SPDX as SPDX
36−import Data.Foldable (traverse_)
37−import Safe (headMay)
38−import Data.Aeson.BetterErrors
39import qualified Data.Text as T
44import qualified Data.Text as T
40import qualified Data.Text.Lazy as TL
45import qualified Data.Text.Lazy as TL
41import qualified Data.Text.Lazy.Encoding as TL
46import qualified Data.Text.Lazy.Encoding as TL
42−import qualified Data.SPDX as SPDX
43
47
44−import Control.Category ((>>>))
48+import Safe (headMay)
45−import Control.Arrow ((***))
46−import Control.Exception (catch, try)
47−import Control.Monad.Trans.Maybe (MaybeT(..), runMaybeT)
48−import Control.Monad.Trans.Except
49−import Control.Monad.Error.Class (MonadError(..))
50−import Control.Monad.Writer.Strict
51
49
52import System.Directory (doesFileExist, findExecutable)
50import System.Directory (doesFileExist, findExecutable)
53−import System.Process (readProcess)
54import System.Exit (exitFailure)
51import System.Exit (exitFailure)
55import System.FilePath (pathSeparator)
52import System.FilePath (pathSeparator)
53+import System.Process (readProcess)
56import qualified System.FilePath.Glob as Glob
54import qualified System.FilePath.Glob as Glob
57import qualified System.Info
55import qualified System.Info
58
56
59−import Web.Bower.PackageMeta (PackageMeta(..), BowerError(..), PackageName,
57+import Web.Bower.PackageMeta (PackageMeta(..), BowerError(..), PackageName, runPackageName, parsePackageName, Repository(..))
60− runPackageName, parsePackageName, Repository(..))
61import qualified Web.Bower.PackageMeta as Bower
58import qualified Web.Bower.PackageMeta as Bower
62
59
60+import Language.PureScript.Publish.ErrorsWarnings
61+import Language.PureScript.Publish.Utils
63import qualified Language.PureScript as P (version)
62import qualified Language.PureScript as P (version)
64import qualified Language.PureScript.Docs as D
63import qualified Language.PureScript.Docs as D
65−import Language.PureScript.Publish.Utils
66−import Language.PureScript.Publish.ErrorsWarnings
67
64
68data PublishOptions = PublishOptions
65data PublishOptions = PublishOptions
69 { -- | How to obtain the version tag and version that the data being
66 { -- | How to obtain the version tag and version that the data being
src/Language/PureScript/Publish/BoxesHelpers.hs+3
@@ -4,7 +4,10 @@ module Language.PureScript.Publish.BoxesHelpers
4 , module Language.PureScript.Publish.BoxesHelpers
4 , module Language.PureScript.Publish.BoxesHelpers
5 ) where
5 ) where
6
6
7+import Prelude.Compat
8+
7import System.IO (hPutStr, stderr)
9import System.IO (hPutStr, stderr)
10+
8import qualified Text.PrettyPrint.Boxes as Boxes
11import qualified Text.PrettyPrint.Boxes as Boxes
9
12
10width :: Int
13width :: Int
src/Language/PureScript/Publish/ErrorsWarnings.hs+8−11
@@ -1,5 +1,4 @@
1{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
2−{-# LANGUAGE RecordWildCards #-}
3
2
4module Language.PureScript.Publish.ErrorsWarnings
3module Language.PureScript.Publish.ErrorsWarnings
5 ( PackageError(..)
4 ( PackageError(..)
@@ -16,26 +15,24 @@ module Language.PureScript.Publish.ErrorsWarnings
16 , renderWarnings
15 , renderWarnings
17 ) where
16 ) where
18
17
19−import Prelude ()
20import Prelude.Compat
18import Prelude.Compat
21
19
20+import Control.Exception (IOException)
21+
22import Data.Aeson.BetterErrors
22import Data.Aeson.BetterErrors
23−import Data.Version
24−import Data.Maybe
25−import Data.Monoid
26import Data.List (intersperse, intercalate)
23import Data.List (intersperse, intercalate)
27import Data.List.NonEmpty (NonEmpty(..))
24import Data.List.NonEmpty (NonEmpty(..))
25+import Data.Maybe
26+import Data.Monoid
27+import Data.Version
28import qualified Data.List.NonEmpty as NonEmpty
28import qualified Data.List.NonEmpty as NonEmpty
29−
30import qualified Data.Text as T
29import qualified Data.Text as T
31
30
32−import Control.Exception (IOException)
31+import Language.PureScript.Publish.BoxesHelpers
33−import Web.Bower.PackageMeta (BowerError, PackageName, runPackageName, showBowerError)
34−import qualified Web.Bower.PackageMeta as Bower
35−
36import qualified Language.PureScript as P
32import qualified Language.PureScript as P
37
33
38−import Language.PureScript.Publish.BoxesHelpers
34+import Web.Bower.PackageMeta (BowerError, PackageName, runPackageName, showBowerError)
35+import qualified Web.Bower.PackageMeta as Bower
39
36
40-- | An error which meant that it was not possible to retrieve metadata for a
37-- | An error which meant that it was not possible to retrieve metadata for a
41-- package.
38-- package.
src/Language/PureScript/Publish/Utils.hs+41−38
@@ -1,38 +1,41 @@
1−
1+
2−module Language.PureScript.Publish.Utils where
2+module Language.PureScript.Publish.Utils where
3−
3+
4+import Prelude.Compat
5+
6+import Data.Either (partitionEithers)
4−import Data.List
7+import Data.List
5−import Data.Either (partitionEithers)
8+
6−import System.Directory
9+import System.Directory
7−import System.Exit (exitFailure)
10+import System.Exit (exitFailure)
8−import System.IO (hPutStrLn, stderr)
11+import System.FilePath (pathSeparator)
9−import System.FilePath (pathSeparator)
12+import System.IO (hPutStrLn, stderr)
10−import qualified System.FilePath.Glob as Glob
13+import qualified System.FilePath.Glob as Glob
11−
14+
12−-- | Glob relative to the current directory, and produce relative pathnames.
15+-- | Glob relative to the current directory, and produce relative pathnames.
13−globRelative :: Glob.Pattern -> IO [FilePath]
16+globRelative :: Glob.Pattern -> IO [FilePath]
14−globRelative pat = do
17+globRelative pat = do
15− currentDir <- getCurrentDirectory
18+ currentDir <- getCurrentDirectory
16− filesAbsolute <- Glob.globDir1 pat currentDir
19+ filesAbsolute <- Glob.globDir1 pat currentDir
17− let prefix = currentDir ++ [pathSeparator]
20+ let prefix = currentDir ++ [pathSeparator]
18− let (fails, paths) = partitionEithers . map (stripPrefix' prefix) $ filesAbsolute
21+ let (fails, paths) = partitionEithers . map (stripPrefix' prefix) $ filesAbsolute
19− if null fails
22+ if null fails
20− then return paths
23+ then return paths
21− else do
24+ else do
22− let p = hPutStrLn stderr
25+ let p = hPutStrLn stderr
23− p "Internal error in Language.PureScript.Publish.Utils.globRelative"
26+ p "Internal error in Language.PureScript.Publish.Utils.globRelative"
24− p "Unmatched files:"
27+ p "Unmatched files:"
25− mapM_ p fails
28+ mapM_ p fails
26− exitFailure
29+ exitFailure
27−
30+
28− where
31+ where
29− stripPrefix' prefix dir =
32+ stripPrefix' prefix dir =
30− maybe (Left dir) Right $ stripPrefix prefix dir
33+ maybe (Left dir) Right $ stripPrefix prefix dir
31−
34+
32−-- | Glob pattern for PureScript source files.
35+-- | Glob pattern for PureScript source files.
33−purescriptSourceFiles :: Glob.Pattern
36+purescriptSourceFiles :: Glob.Pattern
34−purescriptSourceFiles = Glob.compile "src/**/*.purs"
37+purescriptSourceFiles = Glob.compile "src/**/*.purs"
35−
38+
36−-- | Glob pattern for PureScript dependency files.
39+-- | Glob pattern for PureScript dependency files.
37−purescriptDepsFiles :: Glob.Pattern
40+purescriptDepsFiles :: Glob.Pattern
38−purescriptDepsFiles = Glob.compile "bower_components/*/src/**/*.purs"
41+purescriptDepsFiles = Glob.compile "bower_components/*/src/**/*.purs"
src/Language/PureScript/Renamer.hs−6
@@ -1,26 +1,20 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−
4-- |
1-- |
5-- Renaming pass that prevents shadowing of local identifiers.
2-- Renaming pass that prevents shadowing of local identifiers.
6--
3--
7module Language.PureScript.Renamer (renameInModules) where
4module Language.PureScript.Renamer (renameInModules) where
8
5
9−import Prelude ()
10import Prelude.Compat
6import Prelude.Compat
11
7
12import Control.Monad.State
8import Control.Monad.State
13
9
14import Data.List (find)
10import Data.List (find)
15import Data.Maybe (fromJust, fromMaybe)
11import Data.Maybe (fromJust, fromMaybe)
16−
17import qualified Data.Map as M
12import qualified Data.Map as M
18import qualified Data.Set as S
13import qualified Data.Set as S
19
14
20import Language.PureScript.CoreFn
15import Language.PureScript.CoreFn
21import Language.PureScript.Names
16import Language.PureScript.Names
22import Language.PureScript.Traversals
17import Language.PureScript.Traversals
23−
24import qualified Language.PureScript.Constants as C
18import qualified Language.PureScript.Constants as C
25
19
26-- |
20-- |
src/Language/PureScript/Sugar.hs+2−18
@@ -1,35 +1,19 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.Sugar
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- Desugaring passes
2-- Desugaring passes
13--
3--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE FlexibleContexts #-}
17−
18module Language.PureScript.Sugar (desugar, module S) where
4module Language.PureScript.Sugar (desugar, module S) where
19
5
20−import Prelude ()
21import Prelude.Compat
6import Prelude.Compat
22
7
23−import Control.Monad
24import Control.Category ((>>>))
8import Control.Category ((>>>))
9+import Control.Monad
25import Control.Monad.Error.Class (MonadError())
10import Control.Monad.Error.Class (MonadError())
26−import Control.Monad.Writer.Class (MonadWriter())
27import Control.Monad.Supply.Class
11import Control.Monad.Supply.Class
12+import Control.Monad.Writer.Class (MonadWriter())
28
13
29import Language.PureScript.AST
14import Language.PureScript.AST
30import Language.PureScript.Errors
15import Language.PureScript.Errors
31import Language.PureScript.Externs
16import Language.PureScript.Externs
32−
33import Language.PureScript.Sugar.BindingGroups as S
17import Language.PureScript.Sugar.BindingGroups as S
34import Language.PureScript.Sugar.CaseDeclarations as S
18import Language.PureScript.Sugar.CaseDeclarations as S
35import Language.PureScript.Sugar.DoNotation as S
19import Language.PureScript.Sugar.DoNotation as S
src/Language/PureScript/Sugar/BindingGroups.hs−5
@@ -1,7 +1,3 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−{-# LANGUAGE LambdaCase #-}
4−
5-- |
1-- |
6-- This module implements the desugaring pass which creates binding groups from sets of
2-- This module implements the desugaring pass which creates binding groups from sets of
7-- mutually-recursive value declarations and mutually-recursive type declarations.
3-- mutually-recursive value declarations and mutually-recursive type declarations.
@@ -13,7 +9,6 @@ module Language.PureScript.Sugar.BindingGroups
13 , collapseBindingGroupsModule
9 , collapseBindingGroupsModule
14 ) where
10 ) where
15
11
16−import Prelude ()
17import Prelude.Compat
12import Prelude.Compat
18
13
19import Control.Monad ((<=<))
14import Control.Monad ((<=<))
src/Language/PureScript/Sugar/CaseDeclarations.hs+7−11
@@ -1,30 +1,26 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−
4-- |
1-- |
5-- This module implements the desugaring pass which replaces top-level binders with
2-- This module implements the desugaring pass which replaces top-level binders with
6-- case expressions.
3-- case expressions.
7--
4--
8−module Language.PureScript.Sugar.CaseDeclarations (
5+module Language.PureScript.Sugar.CaseDeclarations
9− desugarCases,
6+ ( desugarCases
10− desugarCasesModule
7+ , desugarCasesModule
11−) where
8+ ) where
12
9
13−import Prelude ()
14import Prelude.Compat
10import Prelude.Compat
15
11
16−import Language.PureScript.Crash
17−import Data.Maybe (catMaybes, mapMaybe)
18import Data.List (nub, groupBy, foldl1')
12import Data.List (nub, groupBy, foldl1')
13+import Data.Maybe (catMaybes, mapMaybe)
19
14
20import Control.Monad ((<=<), forM, replicateM, join, unless)
15import Control.Monad ((<=<), forM, replicateM, join, unless)
21import Control.Monad.Error.Class (MonadError(..))
16import Control.Monad.Error.Class (MonadError(..))
22import Control.Monad.Supply.Class
17import Control.Monad.Supply.Class
23
18
24−import Language.PureScript.Names
25import Language.PureScript.AST
19import Language.PureScript.AST
20+import Language.PureScript.Crash
26import Language.PureScript.Environment
21import Language.PureScript.Environment
27import Language.PureScript.Errors
22import Language.PureScript.Errors
23+import Language.PureScript.Names
28import Language.PureScript.Traversals
24import Language.PureScript.Traversals
29import Language.PureScript.TypeChecker.Monad (guardWith)
25import Language.PureScript.TypeChecker.Monad (guardWith)
30
26
src/Language/PureScript/Sugar/DoNotation.hs+7−13
@@ -1,27 +1,21 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−
4-- |
1-- |
5-- This module implements the desugaring pass which replaces do-notation statements with
2-- This module implements the desugaring pass which replaces do-notation statements with
6-- appropriate calls to bind from the Prelude.Monad type class.
3-- appropriate calls to bind from the Prelude.Monad type class.
7--
4--
8−module Language.PureScript.Sugar.DoNotation (
5+module Language.PureScript.Sugar.DoNotation (desugarDoModule) where
9− desugarDoModule
10−) where
11
6
12−import Prelude ()
13import Prelude.Compat
7import Prelude.Compat
14
8
15−import Language.PureScript.Crash
9+import Control.Monad.Error.Class (MonadError(..))
16−import Language.PureScript.Names
10+import Control.Monad.Supply.Class
11+
12+
17import Language.PureScript.AST
13import Language.PureScript.AST
14+import Language.PureScript.Crash
18import Language.PureScript.Errors
15import Language.PureScript.Errors
19−
16+import Language.PureScript.Names
20import qualified Language.PureScript.Constants as C
17import qualified Language.PureScript.Constants as C
21
18
22−import Control.Monad.Error.Class (MonadError(..))
23−import Control.Monad.Supply.Class
24−
25-- |
19-- |
26-- Replace all @DoNotationBind@ and @DoNotationValue@ constructors with applications of the Prelude.bind function,
20-- Replace all @DoNotationBind@ and @DoNotationValue@ constructors with applications of the Prelude.bind function,
27-- and all @DoNotationLet@ constructors with let expressions.
21-- and all @DoNotationLet@ constructors with let expressions.
src/Language/PureScript/Sugar/Names.hs+9−16
@@ -1,8 +1,3 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE RecordWildCards #-}
3−{-# LANGUAGE ScopedTypeVariables #-}
4−{-# LANGUAGE TupleSections #-}
5−
6module Language.PureScript.Sugar.Names
1module Language.PureScript.Sugar.Names
7 ( desugarImports
2 ( desugarImports
8 , desugarImportsWithEnv
3 , desugarImportsWithEnv
@@ -13,32 +8,30 @@ module Language.PureScript.Sugar.Names
13 , Exports(..)
8 , Exports(..)
14 ) where
9 ) where
15
10
16−import Prelude ()
17import Prelude.Compat
11import Prelude.Compat
18
12
19−import Data.List (find, nub)
20−import Data.Maybe (fromMaybe, mapMaybe)
21−
22import Control.Arrow (first)
13import Control.Arrow (first)
23import Control.Monad
14import Control.Monad
24import Control.Monad.Error.Class (MonadError(..))
15import Control.Monad.Error.Class (MonadError(..))
25−import Control.Monad.Writer (MonadWriter(..), censor)
26import Control.Monad.State.Lazy
16import Control.Monad.State.Lazy
17+import Control.Monad.Writer (MonadWriter(..), censor)
27
18
19+import Data.List (find, nub)
20+import Data.Maybe (fromMaybe, mapMaybe)
28import qualified Data.Map as M
21import qualified Data.Map as M
29import qualified Data.Set as S
22import qualified Data.Set as S
30
23
31−import Language.PureScript.Crash
32import Language.PureScript.AST
24import Language.PureScript.AST
33−import Language.PureScript.Names
25+import Language.PureScript.Crash
34−import Language.PureScript.Types
35import Language.PureScript.Errors
26import Language.PureScript.Errors
36−import Language.PureScript.Traversals
37import Language.PureScript.Externs
27import Language.PureScript.Externs
28+import Language.PureScript.Linter.Imports
29+import Language.PureScript.Names
38import Language.PureScript.Sugar.Names.Env
30import Language.PureScript.Sugar.Names.Env
39−import Language.PureScript.Sugar.Names.Imports
40import Language.PureScript.Sugar.Names.Exports
31import Language.PureScript.Sugar.Names.Exports
41−import Language.PureScript.Linter.Imports
32+import Language.PureScript.Sugar.Names.Imports
33+import Language.PureScript.Traversals
34+import Language.PureScript.Types
42
35
43-- |
36-- |
44-- Replaces all local names with qualified names within a list of modules. The
37-- Replaces all local names with qualified names within a list of modules. The
src/Language/PureScript/Sugar/Names/Env.hs+7−8
@@ -1,6 +1,3 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−
4module Language.PureScript.Sugar.Names.Env
1module Language.PureScript.Sugar.Names.Env
5 ( ImportRecord(..)
2 ( ImportRecord(..)
6 , ImportProvenance(..)
3 , ImportProvenance(..)
@@ -21,21 +18,23 @@ module Language.PureScript.Sugar.Names.Env
21 , checkImportConflicts
18 , checkImportConflicts
22 ) where
19 ) where
23
20
21+import Prelude.Compat
22+
23+import Control.Monad
24+import Control.Monad.Error.Class (MonadError(..))
25+import Control.Monad.Writer.Class (MonadWriter(..))
26+
24import Data.Function (on)
27import Data.Function (on)
25import Data.List (groupBy, sortBy, nub, delete)
28import Data.List (groupBy, sortBy, nub, delete)
26import Data.Maybe (fromJust)
29import Data.Maybe (fromJust)
27import qualified Data.Map as M
30import qualified Data.Map as M
28import qualified Data.Set as S
31import qualified Data.Set as S
29
32
30−import Control.Monad
31−import Control.Monad.Error.Class (MonadError(..))
32−import Control.Monad.Writer.Class (MonadWriter(..))
33−
34import Language.PureScript.AST
33import Language.PureScript.AST
35import Language.PureScript.Crash
34import Language.PureScript.Crash
36−import Language.PureScript.Names
37import Language.PureScript.Environment
35import Language.PureScript.Environment
38import Language.PureScript.Errors
36import Language.PureScript.Errors
37+import Language.PureScript.Names
39
38
40-- |
39-- |
41-- The details for an import: the name of the thing that is being imported
40-- The details for an import: the name of the thing that is being imported
src/Language/PureScript/Sugar/Names/Exports.hs+5−13
@@ -1,31 +1,23 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE RankNTypes #-}
3−{-# LANGUAGE ScopedTypeVariables #-}
4−{-# LANGUAGE TupleSections #-}
5−{-# LANGUAGE LambdaCase #-}
6−
7module Language.PureScript.Sugar.Names.Exports
1module Language.PureScript.Sugar.Names.Exports
8 ( findExportable
2 ( findExportable
9 , resolveExports
3 , resolveExports
10 ) where
4 ) where
11
5
12−import Prelude ()
13import Prelude.Compat
6import Prelude.Compat
14
7
15−import Data.List (find, intersect)
16−import Data.Maybe (fromMaybe, mapMaybe)
17−import Data.Foldable (traverse_)
18−
19import Control.Monad
8import Control.Monad
20import Control.Monad.Writer.Class (MonadWriter(..))
9import Control.Monad.Writer.Class (MonadWriter(..))
21import Control.Monad.Error.Class (MonadError(..))
10import Control.Monad.Error.Class (MonadError(..))
22
11
12+import Data.Foldable (traverse_)
13+import Data.List (find, intersect)
14+import Data.Maybe (fromMaybe, mapMaybe)
23import qualified Data.Map as M
15import qualified Data.Map as M
24
16
25−import Language.PureScript.Crash
26import Language.PureScript.AST
17import Language.PureScript.AST
27−import Language.PureScript.Names
18+import Language.PureScript.Crash
28import Language.PureScript.Errors
19import Language.PureScript.Errors
20+import Language.PureScript.Names
29import Language.PureScript.Sugar.Names.Env
21import Language.PureScript.Sugar.Names.Env
30
22
31-- |
23-- |
src/Language/PureScript/Sugar/Names/Imports.hs+7−14
@@ -1,35 +1,28 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−{-# LANGUAGE TupleSections #-}
4−{-# LANGUAGE LambdaCase #-}
5−
6module Language.PureScript.Sugar.Names.Imports
1module Language.PureScript.Sugar.Names.Imports
7 ( resolveImports
2 ( resolveImports
8 , resolveModuleImport
3 , resolveModuleImport
9 , findImports
4 , findImports
10 ) where
5 ) where
11
6
12−import Prelude ()
13import Prelude.Compat
7import Prelude.Compat
14
8
15−import Data.Foldable (traverse_, for_)
16−import Data.Function (on)
17−import Data.List (find, sortBy, groupBy, (\\))
18−import Data.Maybe (fromMaybe, isNothing)
19−import Data.Traversable (for)
20−
21import Control.Arrow (first)
9import Control.Arrow (first)
22import Control.Monad
10import Control.Monad
23import Control.Monad.Error.Class (MonadError(..))
11import Control.Monad.Error.Class (MonadError(..))
24import Control.Monad.Writer (MonadWriter(..))
12import Control.Monad.Writer (MonadWriter(..))
25
13
14+import Data.Foldable (traverse_, for_)
15+import Data.Function (on)
16+import Data.List (find, sortBy, groupBy, (\\))
17+import Data.Maybe (fromMaybe, isNothing)
18+import Data.Traversable (for)
26import qualified Data.Map as M
19import qualified Data.Map as M
27import qualified Data.Set as S
20import qualified Data.Set as S
28
21
29−import Language.PureScript.Crash
30import Language.PureScript.AST
22import Language.PureScript.AST
31−import Language.PureScript.Names
23+import Language.PureScript.Crash
32import Language.PureScript.Errors
24import Language.PureScript.Errors
25+import Language.PureScript.Names
33import Language.PureScript.Sugar.Names.Env
26import Language.PureScript.Sugar.Names.Env
34
27
35-- |
28-- |
src/Language/PureScript/Sugar/ObjectWildcards.hs+3−8
@@ -1,12 +1,7 @@
1−{-# LANGUAGE FlexibleContexts #-}
1+module Language.PureScript.Sugar.ObjectWildcards
2−{-# LANGUAGE PatternGuards #-}
2+ ( desugarObjectConstructors
3−{-# LANGUAGE ScopedTypeVariables #-}
3+ ) where
4
4
5−module Language.PureScript.Sugar.ObjectWildcards (
6− desugarObjectConstructors
7−) where
8−
9−import Prelude ()
10import Prelude.Compat
5import Prelude.Compat
11
6
12import Control.Monad (forM)
7import Control.Monad (forM)
src/Language/PureScript/Sugar/Operators.hs−6
@@ -1,8 +1,3 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−{-# LANGUAGE RecordWildCards #-}
4−{-# LANGUAGE TupleSections #-}
5−
6-- |
1-- |
7-- This module implements the desugaring pass which reapplies binary operators based
2-- This module implements the desugaring pass which reapplies binary operators based
8-- on their fixity data and removes explicit parentheses.
3-- on their fixity data and removes explicit parentheses.
@@ -15,7 +10,6 @@ module Language.PureScript.Sugar.Operators
15 , removeSignedLiterals
10 , removeSignedLiterals
16 ) where
11 ) where
17
12
18−import Prelude ()
19import Prelude.Compat
13import Prelude.Compat
20
14
21import Language.PureScript.AST
15import Language.PureScript.AST
src/Language/PureScript/Sugar/Operators/Binders.hs−1
@@ -1,6 +1,5 @@
1module Language.PureScript.Sugar.Operators.Binders where
1module Language.PureScript.Sugar.Operators.Binders where
2
2
3−import Prelude ()
4import Prelude.Compat
3import Prelude.Compat
5
4
6import Language.PureScript.AST
5import Language.PureScript.AST
src/Language/PureScript/Sugar/Operators/Common.hs−5
@@ -1,10 +1,5 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−{-# LANGUAGE PatternGuards #-}
4−
5module Language.PureScript.Sugar.Operators.Common where
1module Language.PureScript.Sugar.Operators.Common where
6
2
7−import Prelude ()
8import Prelude.Compat
3import Prelude.Compat
9
4
10import Control.Monad.State
5import Control.Monad.State
src/Language/PureScript/Sugar/Operators/Expr.hs−4
@@ -1,9 +1,5 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−
4module Language.PureScript.Sugar.Operators.Expr where
1module Language.PureScript.Sugar.Operators.Expr where
5
2
6−import Prelude ()
7import Prelude.Compat
3import Prelude.Compat
8
4
9import Data.Functor.Identity
5import Data.Functor.Identity
src/Language/PureScript/Sugar/Operators/Types.hs−1
@@ -1,6 +1,5 @@
1module Language.PureScript.Sugar.Operators.Types where
1module Language.PureScript.Sugar.Operators.Types where
2
2
3−import Prelude ()
4import Prelude.Compat
3import Prelude.Compat
5
4
6import Language.PureScript.AST
5import Language.PureScript.AST
src/Language/PureScript/Sugar/TypeClasses.hs−5
@@ -1,7 +1,3 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE RecordWildCards #-}
3−{-# LANGUAGE ScopedTypeVariables #-}
4−
5-- |
1-- |
6-- This module implements the desugaring pass which creates type synonyms for type class dictionaries
2-- This module implements the desugaring pass which creates type synonyms for type class dictionaries
7-- and dictionary expressions for type class instances.
3-- and dictionary expressions for type class instances.
@@ -12,7 +8,6 @@ module Language.PureScript.Sugar.TypeClasses
12 , superClassDictionaryNames
8 , superClassDictionaryNames
13 ) where
9 ) where
14
10
15−import Prelude ()
16import Prelude.Compat
11import Prelude.Compat
17
12
18import Language.PureScript.Crash
13import Language.PureScript.Crash
src/Language/PureScript/Sugar/TypeClasses/Deriving.hs+6−12
@@ -1,29 +1,23 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE MultiParamTypeClasses #-}
3{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
4−{-# LANGUAGE PatternGuards #-}
5−{-# LANGUAGE RankNTypes #-}
6−{-# LANGUAGE ScopedTypeVariables #-}
7
2
8-- |
3-- |
9-- This module implements the generic deriving elaboration that takes place during desugaring.
4-- This module implements the generic deriving elaboration that takes place during desugaring.
10--
5--
11module Language.PureScript.Sugar.TypeClasses.Deriving (deriveInstances) where
6module Language.PureScript.Sugar.TypeClasses.Deriving (deriveInstances) where
12
7
13−import Prelude ()
14import Prelude.Compat
8import Prelude.Compat
15
9
16−import Data.List (foldl', find, sortBy)
17−import Data.Maybe (fromMaybe)
18−import Data.Ord (comparing)
19−
20import Control.Arrow (second)
10import Control.Arrow (second)
21import Control.Monad (replicateM)
11import Control.Monad (replicateM)
22−import Control.Monad.Supply.Class (MonadSupply)
23import Control.Monad.Error.Class (MonadError(..))
12import Control.Monad.Error.Class (MonadError(..))
13+import Control.Monad.Supply.Class (MonadSupply)
14+
15+import Data.List (foldl', find, sortBy)
16+import Data.Maybe (fromMaybe)
17+import Data.Ord (comparing)
24
18
25−import Language.PureScript.Crash
26import Language.PureScript.AST
19import Language.PureScript.AST
20+import Language.PureScript.Crash
27import Language.PureScript.Environment
21import Language.PureScript.Environment
28import Language.PureScript.Errors
22import Language.PureScript.Errors
29import Language.PureScript.Names
23import Language.PureScript.Names
src/Language/PureScript/Sugar/TypeDeclarations.hs+5−21
@@ -1,27 +1,11 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.Sugar.TypeDeclarations
4−-- Copyright : (c) 2013-15 Phil Freeman, (c) 2014-15 Gary Burgess
5−-- License : MIT (http://opensource.org/licenses/MIT)
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12−-- This module implements the desugaring pass which replaces top-level type declarations with
2+-- This module implements the desugaring pass which replaces top-level type
13−-- type annotations on the corresponding expression.
3+-- declarations with type annotations on the corresponding expression.
14--
4--
15−-----------------------------------------------------------------------------
16−
17−{-# LANGUAGE FlexibleContexts #-}
18−{-# LANGUAGE ScopedTypeVariables #-}
19−
20−module Language.PureScript.Sugar.TypeDeclarations (
5+module Language.PureScript.Sugar.TypeDeclarations
21− desugarTypeDeclarationsModule
6+ ( desugarTypeDeclarationsModule
22−) where
7+ ) where
23
8
24−import Prelude ()
25import Prelude.Compat
9import Prelude.Compat
26
10
27import Control.Monad (forM)
11import Control.Monad (forM)
src/Language/PureScript/Traversals.hs+27−42
@@ -1,42 +1,27 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.Traversals
4−-- Copyright : (c) 2014 Phil Freeman
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11−-- | Common functions for implementing generic traversals
1+-- | Common functions for implementing generic traversals
12−--
13−-----------------------------------------------------------------------------
14−
15−module Language.PureScript.Traversals where
2+module Language.PureScript.Traversals where
16−
3+
17−import Prelude ()
4+import Prelude.Compat
18−import Prelude.Compat
5+
19−
20−fstM :: (Functor f) => (a -> f c) -> (a, b) -> f (c, b)
6+fstM :: (Functor f) => (a -> f c) -> (a, b) -> f (c, b)
21−fstM f (a, b) = flip (,) b <$> f a
7+fstM f (a, b) = flip (,) b <$> f a
22−
8+
23−sndM :: (Functor f) => (b -> f c) -> (a, b) -> f (a, c)
9+sndM :: (Functor f) => (b -> f c) -> (a, b) -> f (a, c)
24−sndM f (a, b) = (,) a <$> f b
10+sndM f (a, b) = (,) a <$> f b
25−
11+
26−thirdM :: (Functor f) => (c -> f d) -> (a, b, c) -> f (a, b, d)
12+thirdM :: (Functor f) => (c -> f d) -> (a, b, c) -> f (a, b, d)
27−thirdM f (a, b, c) = (,,) a b <$> f c
13+thirdM f (a, b, c) = (,,) a b <$> f c
28−
14+
29−pairM :: (Applicative f) => (a -> f c) -> (b -> f d) -> (a, b) -> f (c, d)
15+pairM :: (Applicative f) => (a -> f c) -> (b -> f d) -> (a, b) -> f (c, d)
30−pairM f g (a, b) = (,) <$> f a <*> g b
16+pairM f g (a, b) = (,) <$> f a <*> g b
31−
17+
32−maybeM :: (Applicative f) => (a -> f b) -> Maybe a -> f (Maybe b)
18+maybeM :: (Applicative f) => (a -> f b) -> Maybe a -> f (Maybe b)
33−maybeM _ Nothing = pure Nothing
19+maybeM _ Nothing = pure Nothing
34−maybeM f (Just a) = Just <$> f a
20+maybeM f (Just a) = Just <$> f a
35−
21+
36−eitherM :: (Applicative f) => (a -> f c) -> (b -> f d) -> Either a b -> f (Either c d)
22+eitherM :: (Applicative f) => (a -> f c) -> (b -> f d) -> Either a b -> f (Either c d)
37−eitherM f _ (Left a) = Left <$> f a
23+eitherM f _ (Left a) = Left <$> f a
38−eitherM _ g (Right b) = Right <$> g b
24+eitherM _ g (Right b) = Right <$> g b
39−
25+
40−defS :: (Monad m) => st -> val -> m (st, val)
26+defS :: (Monad m) => st -> val -> m (st, val)
41−defS s val = return (s, val)
27+defS s val = return (s, val)
42−
src/Language/PureScript/TypeChecker.hs+15−21
@@ -1,36 +1,26 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
2{-# LANGUAGE FlexibleInstances #-}
1{-# LANGUAGE FlexibleInstances #-}
3−{-# LANGUAGE FlexibleContexts #-}
4−{-# LANGUAGE PatternGuards #-}
5
2
6-- |
3-- |
7-- The top-level type checker, which checks all declarations in a module.
4-- The top-level type checker, which checks all declarations in a module.
8--
5--
9−module Language.PureScript.TypeChecker (
6+module Language.PureScript.TypeChecker
10− module T,
7+ ( module T
11− typeCheckModule
8+ , typeCheckModule
12−) where
9+ ) where
13
10
14−import Prelude ()
15import Prelude.Compat
11import Prelude.Compat
16
12
17−import Language.PureScript.TypeChecker.Monad as T
18−import Language.PureScript.TypeChecker.Kinds as T
19−import Language.PureScript.TypeChecker.Types as T
20−import Language.PureScript.TypeChecker.Synonyms as T
21−
22−import Data.Maybe
23−import Data.List (nub, nubBy, (\\), sort, group)
24−import Data.Foldable (for_, traverse_)
25−
26−import qualified Data.Map as M
27−
28import Control.Monad (when, unless, void, forM, forM_)
13import Control.Monad (when, unless, void, forM, forM_)
29−import Control.Monad.Supply.Class (MonadSupply)
30−import Control.Monad.State.Class (MonadState(..), modify)
31import Control.Monad.Error.Class (MonadError(..))
14import Control.Monad.Error.Class (MonadError(..))
15+import Control.Monad.State.Class (MonadState(..), modify)
16+import Control.Monad.Supply.Class (MonadSupply)
32import Control.Monad.Writer.Class (MonadWriter(..))
17import Control.Monad.Writer.Class (MonadWriter(..))
33
18
19+import Data.Foldable (for_, traverse_)
20+import Data.List (nub, nubBy, (\\), sort, group)
21+import Data.Maybe
22+import qualified Data.Map as M
23+
34import Language.PureScript.AST
24import Language.PureScript.AST
35import Language.PureScript.Crash
25import Language.PureScript.Crash
36import Language.PureScript.Environment
26import Language.PureScript.Environment
@@ -39,6 +29,10 @@ import Language.PureScript.Kinds
39import Language.PureScript.Linter
29import Language.PureScript.Linter
40import Language.PureScript.Names
30import Language.PureScript.Names
41import Language.PureScript.Traversals
31import Language.PureScript.Traversals
32+import Language.PureScript.TypeChecker.Kinds as T
33+import Language.PureScript.TypeChecker.Monad as T
34+import Language.PureScript.TypeChecker.Synonyms as T
35+import Language.PureScript.TypeChecker.Types as T
42import Language.PureScript.TypeClassDictionaries
36import Language.PureScript.TypeClassDictionaries
43import Language.PureScript.Types
37import Language.PureScript.Types
44
38
src/Language/PureScript/TypeChecker/Entailment.hs+10−11
@@ -1,26 +1,25 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
2−{-# LANGUAGE FlexibleContexts #-}
3−
4-- |
1-- |
5-- Type class entailment
2-- Type class entailment
6--
3--
7−module Language.PureScript.TypeChecker.Entailment (Context, replaceTypeClassDictionaries) where
4+module Language.PureScript.TypeChecker.Entailment
5+ ( Context
6+ , replaceTypeClassDictionaries
7+ ) where
8
8
9−import Prelude ()
10import Prelude.Compat
9import Prelude.Compat
11
10
11+import Control.Monad.Error.Class (MonadError(..))
12+import Control.Monad.State
13+import Control.Monad.Supply.Class (MonadSupply(..))
14+import Control.Monad.Writer
15+
12import Data.Function (on)
16import Data.Function (on)
13import Data.List (minimumBy, sortBy, groupBy)
17import Data.List (minimumBy, sortBy, groupBy)
14import Data.Maybe (maybeToList, mapMaybe)
18import Data.Maybe (maybeToList, mapMaybe)
15import qualified Data.Map as M
19import qualified Data.Map as M
16
20
17−import Control.Monad.State
18−import Control.Monad.Writer
19−import Control.Monad.Error.Class (MonadError(..))
20−import Control.Monad.Supply.Class (MonadSupply(..))
21−
22−import Language.PureScript.Crash
23import Language.PureScript.AST
21import Language.PureScript.AST
22+import Language.PureScript.Crash
24import Language.PureScript.Errors
23import Language.PureScript.Errors
25import Language.PureScript.Names
24import Language.PureScript.Names
26import Language.PureScript.TypeChecker.Unify
25import Language.PureScript.TypeChecker.Unify
src/Language/PureScript/TypeChecker/Kinds.hs+3−9
@@ -1,9 +1,4 @@
1−{-# LANGUAGE MultiParamTypeClasses #-}
2{-# LANGUAGE FlexibleInstances #-}
1{-# LANGUAGE FlexibleInstances #-}
3−{-# LANGUAGE FlexibleContexts #-}
4−{-# LANGUAGE TupleSections #-}
5−{-# LANGUAGE ScopedTypeVariables #-}
6−{-# LANGUAGE RankNTypes #-}
7
2
8-- |
3-- |
9-- This module implements the kind checker
4-- This module implements the kind checker
@@ -15,16 +10,15 @@ module Language.PureScript.TypeChecker.Kinds
15 , kindsOfAll
10 , kindsOfAll
16 ) where
11 ) where
17
12
18−import Prelude ()
19import Prelude.Compat
13import Prelude.Compat
20
14
21−import qualified Data.Map as M
22−
23import Control.Arrow (second)
15import Control.Arrow (second)
24import Control.Monad
16import Control.Monad
25import Control.Monad.Error.Class (MonadError(..))
17import Control.Monad.Error.Class (MonadError(..))
26−import Control.Monad.Writer.Class (MonadWriter(..))
27import Control.Monad.State
18import Control.Monad.State
19+import Control.Monad.Writer.Class (MonadWriter(..))
20+
21+import qualified Data.Map as M
28
22
29import Language.PureScript.Crash
23import Language.PureScript.Crash
30import Language.PureScript.Environment
24import Language.PureScript.Environment
src/Language/PureScript/TypeChecker/Monad.hs+4−8
@@ -1,7 +1,4 @@
1{-# LANGUAGE FlexibleInstances #-}
1{-# LANGUAGE FlexibleInstances #-}
2−{-# LANGUAGE RankNTypes #-}
3−{-# LANGUAGE MultiParamTypeClasses #-}
4−{-# LANGUAGE FlexibleContexts #-}
5{-# LANGUAGE GADTs #-}
2{-# LANGUAGE GADTs #-}
6
3
7-- |
4-- |
@@ -9,17 +6,16 @@
9--
6--
10module Language.PureScript.TypeChecker.Monad where
7module Language.PureScript.TypeChecker.Monad where
11
8
12−import Prelude ()
13import Prelude.Compat
9import Prelude.Compat
14
10
15−import Data.Maybe
16−import qualified Data.Map as M
17−
18import Control.Arrow (second)
11import Control.Arrow (second)
19−import Control.Monad.State
20import Control.Monad.Error.Class (MonadError(..))
12import Control.Monad.Error.Class (MonadError(..))
13+import Control.Monad.State
21import Control.Monad.Writer.Class (MonadWriter(..), listen, censor)
14import Control.Monad.Writer.Class (MonadWriter(..), listen, censor)
22
15
16+import Data.Maybe
17+import qualified Data.Map as M
18+
23import Language.PureScript.Environment
19import Language.PureScript.Environment
24import Language.PureScript.Errors
20import Language.PureScript.Errors
25import Language.PureScript.Kinds
21import Language.PureScript.Kinds
src/Language/PureScript/TypeChecker/Rows.hs+6−23
@@ -1,35 +1,18 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.TypeChecker.Rows
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- Functions relating to type checking for rows
2-- Functions relating to type checking for rows
13--
3--
14−-----------------------------------------------------------------------------
4+module Language.PureScript.TypeChecker.Rows
15−
5+ ( checkDuplicateLabels
16−{-# LANGUAGE ScopedTypeVariables #-}
6+ ) where
17−{-# LANGUAGE FlexibleContexts #-}
18−{-# LANGUAGE CPP #-}
19
7
20−module Language.PureScript.TypeChecker.Rows (
8+import Prelude.Compat
21− checkDuplicateLabels
22−) where
23
9
24−import Data.List
25−
26−#if __GLASGOW_HASKELL__ < 710
27−import Control.Applicative
28−#endif
29import Control.Monad
10import Control.Monad
30import Control.Monad.Error.Class (MonadError(..))
11import Control.Monad.Error.Class (MonadError(..))
31import Control.Monad.State.Class (MonadState(..))
12import Control.Monad.State.Class (MonadState(..))
32
13
14+import Data.List
15+
33import Language.PureScript.AST
16import Language.PureScript.AST
34import Language.PureScript.Errors
17import Language.PureScript.Errors
35import Language.PureScript.TypeChecker.Monad
18import Language.PureScript.TypeChecker.Monad
src/Language/PureScript/TypeChecker/Skolems.hs+14−29
@@ -1,45 +1,30 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.TypeChecker.Skolems
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- Functions relating to skolemization used during typechecking
2-- Functions relating to skolemization used during typechecking
13--
3--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE FlexibleContexts #-}
17−
18−module Language.PureScript.TypeChecker.Skolems (
4+module Language.PureScript.TypeChecker.Skolems
19− newSkolemConstant,
5+ ( newSkolemConstant
20− introduceSkolemScope,
6+ , introduceSkolemScope
21− newSkolemScope,
7+ , newSkolemScope
22− skolemize,
8+ , skolemize
23− skolemizeTypesInValue,
9+ , skolemizeTypesInValue
24− skolemEscapeCheck
10+ , skolemEscapeCheck
25−) where
11+ ) where
26
12
27−import Prelude ()
28import Prelude.Compat
13import Prelude.Compat
29
14
30−import Data.List (nub, (\\))
31−import Data.Monoid
32−import Data.Functor.Identity (Identity(), runIdentity)
33−
34import Control.Monad.Error.Class (MonadError(..))
15import Control.Monad.Error.Class (MonadError(..))
35import Control.Monad.State.Class (MonadState(..), gets, modify)
16import Control.Monad.State.Class (MonadState(..), gets, modify)
36
17
37−import Language.PureScript.Crash
18+import Data.Functor.Identity (Identity(), runIdentity)
19+import Data.List (nub, (\\))
20+import Data.Monoid
21+
38import Language.PureScript.AST
22import Language.PureScript.AST
23+import Language.PureScript.Crash
39import Language.PureScript.Errors
24import Language.PureScript.Errors
25+import Language.PureScript.Traversals (defS)
40import Language.PureScript.TypeChecker.Monad
26import Language.PureScript.TypeChecker.Monad
41import Language.PureScript.Types
27import Language.PureScript.Types
42−import Language.PureScript.Traversals (defS)
43
28
44-- |
29-- |
45-- Generate a new skolem constant
30-- Generate a new skolem constant
src/Language/PureScript/TypeChecker/Subsumption.hs+7−23
@@ -1,36 +1,20 @@
1−-----------------------------------------------------------------------------
2−--
3−-- Module : Language.PureScript.TypeChecker.Subsumption
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
1-- |
12-- Subsumption checking
2-- Subsumption checking
13--
3--
14−-----------------------------------------------------------------------------
4+module Language.PureScript.TypeChecker.Subsumption
5+ ( subsumes
6+ ) where
15
7
16−{-# LANGUAGE FlexibleContexts #-}
8+import Prelude.Compat
17−{-# LANGUAGE CPP #-}
18
9
19−module Language.PureScript.TypeChecker.Subsumption (
10+import Control.Monad.Error.Class (MonadError(..))
20− subsumes
11+import Control.Monad.State.Class (MonadState(..))
21−) where
22
12
23import Data.List (sortBy)
13import Data.List (sortBy)
24import Data.Ord (comparing)
14import Data.Ord (comparing)
25
15
26−#if __GLASGOW_HASKELL__ < 710
27−import Control.Applicative
28−#endif
29−import Control.Monad.Error.Class (MonadError(..))
30−import Control.Monad.State.Class (MonadState(..))
31−
32−import Language.PureScript.Crash
33import Language.PureScript.AST
16import Language.PureScript.AST
17+import Language.PureScript.Crash
34import Language.PureScript.Environment
18import Language.PureScript.Environment
35import Language.PureScript.Errors
19import Language.PureScript.Errors
36import Language.PureScript.TypeChecker.Monad
20import Language.PureScript.TypeChecker.Monad
src/Language/PureScript/TypeChecker/Synonyms.hs+8−24
@@ -1,36 +1,20 @@
1−-----------------------------------------------------------------------------
1+{-# LANGUAGE GADTs #-}
2−--
2+
3−-- Module : Language.PureScript.TypeChecker.Synonyms
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
3-- |
12-- Functions for replacing fully applied type synonyms
4-- Functions for replacing fully applied type synonyms
13--
5--
14−-----------------------------------------------------------------------------
6+module Language.PureScript.TypeChecker.Synonyms
15−
7+ ( replaceAllTypeSynonyms
16−{-# LANGUAGE FlexibleContexts #-}
8+ ) where
17−{-# LANGUAGE MultiParamTypeClasses #-}
18−{-# LANGUAGE PatternGuards #-}
19−{-# LANGUAGE GADTs #-}
20
9
21−module Language.PureScript.TypeChecker.Synonyms (
22− replaceAllTypeSynonyms
23−) where
24−
25−import Prelude ()
26import Prelude.Compat
10import Prelude.Compat
27
11
28−import Data.Maybe (fromMaybe)
29−import qualified Data.Map as M
30−
31import Control.Monad.Error.Class (MonadError(..))
12import Control.Monad.Error.Class (MonadError(..))
32import Control.Monad.State
13import Control.Monad.State
33
14
15+import Data.Maybe (fromMaybe)
16+import qualified Data.Map as M
17+
34import Language.PureScript.Environment
18import Language.PureScript.Environment
35import Language.PureScript.Errors
19import Language.PureScript.Errors
36import Language.PureScript.TypeChecker.Monad
20import Language.PureScript.TypeChecker.Monad
src/Language/PureScript/TypeChecker/Types.hs+7−12
@@ -1,8 +1,4 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−{-# LANGUAGE MultiParamTypeClasses #-}
4{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
5−{-# LANGUAGE TupleSections #-}
6
2
7-- |
3-- |
8-- This module implements the type checker
4-- This module implements the type checker
@@ -28,22 +24,21 @@ module Language.PureScript.TypeChecker.Types
28 Check a function of a given type returns a value of another type when applied to its arguments
24 Check a function of a given type returns a value of another type when applied to its arguments
29-}
25-}
30
26
31−import Prelude ()
32import Prelude.Compat
27import Prelude.Compat
33
28
34−import Data.Either (lefts, rights)
35−import Data.List (transpose, nub, (\\), partition, delete)
36−import Data.Maybe (fromMaybe)
37−import qualified Data.Map as M
38−
39import Control.Monad
29import Control.Monad
30+import Control.Monad.Error.Class (MonadError(..))
40import Control.Monad.State.Class (MonadState(..), gets)
31import Control.Monad.State.Class (MonadState(..), gets)
41import Control.Monad.Supply.Class (MonadSupply)
32import Control.Monad.Supply.Class (MonadSupply)
42−import Control.Monad.Error.Class (MonadError(..))
43import Control.Monad.Writer.Class (MonadWriter(..))
33import Control.Monad.Writer.Class (MonadWriter(..))
44
34
45−import Language.PureScript.Crash
35+import Data.Either (lefts, rights)
36+import Data.List (transpose, nub, (\\), partition, delete)
37+import Data.Maybe (fromMaybe)
38+import qualified Data.Map as M
39+
46import Language.PureScript.AST
40import Language.PureScript.AST
41+import Language.PureScript.Crash
47import Language.PureScript.Environment
42import Language.PureScript.Environment
48import Language.PureScript.Errors
43import Language.PureScript.Errors
49import Language.PureScript.Kinds
44import Language.PureScript.Kinds
src/Language/PureScript/TypeChecker/Unify.hs+20−37
@@ -1,47 +1,30 @@
1−-----------------------------------------------------------------------------
1+{-# LANGUAGE FlexibleInstances #-}
2−--
2+
3−-- Module : Language.PureScript.TypeChecker.Unify
4−-- Copyright : (c) Phil Freeman 2013
5−-- License : MIT
6−--
7−-- Maintainer : Phil Freeman <paf31@cantab.net>
8−-- Stability : experimental
9−-- Portability :
10−--
11-- |
3-- |
12-- Functions and instances relating to unification
4-- Functions and instances relating to unification
13--
5--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE FlexibleInstances #-}
17−{-# LANGUAGE FlexibleContexts #-}
18−{-# LANGUAGE MultiParamTypeClasses #-}
19−{-# LANGUAGE ScopedTypeVariables #-}
20−{-# LANGUAGE CPP #-}
21−
22−module Language.PureScript.TypeChecker.Unify (
6+module Language.PureScript.TypeChecker.Unify
23− freshType,
7+ ( freshType
24− solveType,
8+ , solveType
25− substituteType,
9+ , substituteType
26− unknownsInType,
10+ , unknownsInType
27− unifyTypes,
11+ , unifyTypes
28− unifyRows,
12+ , unifyRows
29− unifiesWith,
13+ , unifiesWith
30− replaceVarWithUnknown,
14+ , replaceVarWithUnknown
31− replaceTypeWildcards,
15+ , replaceTypeWildcards
32− varIfUnknown
16+ , varIfUnknown
33−) where
17+ ) where
18+
19+import Prelude.Compat
34
20
35−import Data.List (nub, sort)
36−import qualified Data.Map as M
37−
38−#if __GLASGOW_HASKELL__ < 710
39−import Control.Applicative
40−#endif
41import Control.Monad
21import Control.Monad
42import Control.Monad.Error.Class (MonadError(..))
22import Control.Monad.Error.Class (MonadError(..))
43−import Control.Monad.Writer.Class (MonadWriter(..))
44import Control.Monad.State.Class (MonadState(..), gets, modify)
23import Control.Monad.State.Class (MonadState(..), gets, modify)
24+import Control.Monad.Writer.Class (MonadWriter(..))
25+
26+import Data.List (nub, sort)
27+import qualified Data.Map as M
45
28
46import Language.PureScript.Crash
29import Language.PureScript.Crash
47import Language.PureScript.Errors
30import Language.PureScript.Errors
src/Language/PureScript/TypeClassDictionaries.hs+2
@@ -1,5 +1,7 @@
1module Language.PureScript.TypeClassDictionaries where
1module Language.PureScript.TypeClassDictionaries where
2
2
3+import Prelude.Compat
4+
3import Language.PureScript.Names
5import Language.PureScript.Names
4import Language.PureScript.Types
6import Language.PureScript.Types
5
7
src/Language/PureScript/Types.hs+5−6
@@ -6,19 +6,18 @@
6--
6--
7module Language.PureScript.Types where
7module Language.PureScript.Types where
8
8
9−import Prelude ()
10import Prelude.Compat
9import Prelude.Compat
11
10
11+import Control.Monad ((<=<))
12+
12import Data.List (nub)
13import Data.List (nub)
13import Data.Maybe (fromMaybe)
14import Data.Maybe (fromMaybe)
14import qualified Data.Aeson as A
15import qualified Data.Aeson as A
15import qualified Data.Aeson.TH as A
16import qualified Data.Aeson.TH as A
16
17
17−import Control.Monad ((<=<))
18−
19−import Language.PureScript.Names
20−import Language.PureScript.Kinds
21import Language.PureScript.AST.SourcePos
18import Language.PureScript.AST.SourcePos
19+import Language.PureScript.Kinds
20+import Language.PureScript.Names
22
21
23-- |
22-- |
24-- An identifier for the scope of a skolem variable
23-- An identifier for the scope of a skolem variable
@@ -41,7 +40,7 @@ data Type
41 -- |
40 -- |
42 -- A type wildcard, as would appear in a partial type synonym
41 -- A type wildcard, as would appear in a partial type synonym
43 --
42 --
44− | TypeWildcard (SourceSpan)
43+ | TypeWildcard SourceSpan
45 -- |
44 -- |
46 -- A type constructor
45 -- A type constructor
47 --
46 --
src/System/IO/UTF8.hs+2−2
@@ -1,6 +1,6 @@
1−module System.IO.UTF8
1+module System.IO.UTF8 where
2
2
3−where
3+import Prelude.Compat
4
4
5import System.IO ( IOMode(..)
5import System.IO ( IOMode(..)
6 , hGetContents
6 , hGetContents