git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
NoImplicitPrelude, enable some global extensions (#2094)

* NoImplicitPrelude, enable some global extensions

commitfac68e50b828869b5f1fe394e86b967363926aab authorGary Burgess <gary.burgess@gmail.com> dateFri 6 May 2016, 18:05 (10 years ago) parent0e7c936
128 files changed+699−1309
psc-ide-server/Main.hs−1 psci/PSCi/Directive.hs−13 psci/PSCi/IO.hs−14 psci/PSCi/Parser.hs−12 psci/PSCi/Types.hs−12 purescript.cabal+16−1 src/Control/Monad/Logger.hs+7−20 src/Control/Monad/Supply.hs+5−18 src/Control/Monad/Supply/Class.hs+6−6 src/Language/PureScript.hs+4−17 src/Language/PureScript/AST/Binders.hs+2 src/Language/PureScript/AST/Declarations.hs+2−6 src/Language/PureScript/AST/Exported.hs+3 src/Language/PureScript/AST/Literals.hs+2−2 src/Language/PureScript/AST/Operators.hs+2 src/Language/PureScript/AST/SourcePos.hs−3 src/Language/PureScript/AST/Traversals.hs+5−8 src/Language/PureScript/Bundle.hs+7−24 src/Language/PureScript/CodeGen.hs+8−20 src/Language/PureScript/CodeGen/JS.hs+9−15 src/Language/PureScript/CodeGen/JS/AST.hs+1−2 src/Language/PureScript/CodeGen/JS/Common.hs+2 src/Language/PureScript/CodeGen/JS/Optimizer.hs+5−9 src/Language/PureScript/CodeGen/JS/Optimizer/Blocks.hs+2−12 src/Language/PureScript/CodeGen/JS/Optimizer/Common.hs+2 src/Language/PureScript/CodeGen/JS/Optimizer/Inliner.hs+2−2 src/Language/PureScript/CodeGen/JS/Optimizer/MagicDo.hs+2 src/Language/PureScript/CodeGen/JS/Optimizer/TCO.hs+2−12 src/Language/PureScript/CodeGen/JS/Optimizer/Unused.hs+2−13 src/Language/PureScript/Comments.hs+2 src/Language/PureScript/Constants.hs+2−3 src/Language/PureScript/CoreFn.hs+1−1 src/Language/PureScript/CoreFn/Ann.hs+25−37 src/Language/PureScript/CoreFn/Binders.hs+2−2 src/Language/PureScript/CoreFn/Desugar.hs+4−6 src/Language/PureScript/CoreFn/Expr.hs+3−3 src/Language/PureScript/CoreFn/Meta.hs+2 src/Language/PureScript/CoreFn/Module.hs+5−14 src/Language/PureScript/CoreFn/Traversals.hs+3−1 src/Language/PureScript/Crash.hs+11−9 src/Language/PureScript/Docs.hs+4−4 src/Language/PureScript/Docs/AsMarkdown.hs+4−8 src/Language/PureScript/Docs/Convert.hs+5−8 src/Language/PureScript/Docs/Convert/ReExports.hs+7−12 src/Language/PureScript/Docs/Convert/Single.hs+4−9 src/Language/PureScript/Docs/ParseAndBookmark.hs+6−10 src/Language/PureScript/Docs/Render.hs+6−5 src/Language/PureScript/Docs/RenderedCode.hs+8−11 src/Language/PureScript/Docs/RenderedCode/Render.hs+25−24 src/Language/PureScript/Docs/RenderedCode/Types.hs+3−3 src/Language/PureScript/Docs/Types.hs+9−11 src/Language/PureScript/Environment.hs+4−2 src/Language/PureScript/Errors.hs+13−18 src/Language/PureScript/Errors/JSON.hs−15 src/Language/PureScript/Externs.hs+7−10 src/Language/PureScript/Ide.hs−4 src/Language/PureScript/Ide/CaseSplit.hs−6 src/Language/PureScript/Ide/Command.hs−2 src/Language/PureScript/Ide/Error.hs+1 src/Language/PureScript/Ide/Externs.hs−4 src/Language/PureScript/Ide/Filter.hs−1 src/Language/PureScript/Ide/Imports.hs+1−4 src/Language/PureScript/Ide/Matcher.hs−1 src/Language/PureScript/Ide/Pursuit.hs−1 src/Language/PureScript/Ide/Rebuild.hs+2−5 src/Language/PureScript/Ide/Reexports.hs−2 src/Language/PureScript/Ide/SourceFile.hs−2 src/Language/PureScript/Ide/State.hs−4 src/Language/PureScript/Ide/Types.hs−4 src/Language/PureScript/Ide/Util.hs+1 src/Language/PureScript/Kinds.hs−1 src/Language/PureScript/Linter.hs+5−11 src/Language/PureScript/Linter/Exhaustive.hs+11−15 src/Language/PureScript/Linter/Imports.hs+1−7 src/Language/PureScript/Make.hs+27−37 src/Language/PureScript/ModuleDependencies.hs+8−8 src/Language/PureScript/Names.hs+3−4 src/Language/PureScript/Options.hs+2−12 src/Language/PureScript/Parser.hs+24−36 src/Language/PureScript/Parser/Common.hs+5−6 src/Language/PureScript/Parser/Declarations.hs+13−17 src/Language/PureScript/Parser/JS.hs+4−18 src/Language/PureScript/Parser/Kinds.hs+2−16 src/Language/PureScript/Parser/Lexer.hs+4−19 src/Language/PureScript/Parser/State.hs+2−12 src/Language/PureScript/Parser/Types.hs+11−10 src/Language/PureScript/Pretty.hs+2−14 src/Language/PureScript/Pretty/Common.hs+4−16 src/Language/PureScript/Pretty/JS.hs+10−25 src/Language/PureScript/Pretty/Kinds.hs+10−18 src/Language/PureScript/Pretty/Types.hs+15−7 src/Language/PureScript/Pretty/Values.hs+8−6 src/Language/PureScript/Publish.hs+20−23 src/Language/PureScript/Publish/BoxesHelpers.hs+3 src/Language/PureScript/Publish/ErrorsWarnings.hs+8−11 src/Language/PureScript/Publish/Utils.hs+41−38 src/Language/PureScript/Renamer.hs−6 src/Language/PureScript/Sugar.hs+2−18 src/Language/PureScript/Sugar/BindingGroups.hs−5 src/Language/PureScript/Sugar/CaseDeclarations.hs+7−11 src/Language/PureScript/Sugar/DoNotation.hs+7−13 src/Language/PureScript/Sugar/Names.hs+9−16 src/Language/PureScript/Sugar/Names/Env.hs+7−8 src/Language/PureScript/Sugar/Names/Exports.hs+5−13 src/Language/PureScript/Sugar/Names/Imports.hs+7−14 src/Language/PureScript/Sugar/ObjectWildcards.hs+3−8 src/Language/PureScript/Sugar/Operators.hs−6 src/Language/PureScript/Sugar/Operators/Binders.hs−1 src/Language/PureScript/Sugar/Operators/Common.hs−5 src/Language/PureScript/Sugar/Operators/Expr.hs−4 src/Language/PureScript/Sugar/Operators/Types.hs−1 src/Language/PureScript/Sugar/TypeClasses.hs−5 src/Language/PureScript/Sugar/TypeClasses/Deriving.hs+6−12 src/Language/PureScript/Sugar/TypeDeclarations.hs+5−21 src/Language/PureScript/Traversals.hs+27−42 src/Language/PureScript/TypeChecker.hs+15−21 src/Language/PureScript/TypeChecker/Entailment.hs+10−11 src/Language/PureScript/TypeChecker/Kinds.hs+3−9 src/Language/PureScript/TypeChecker/Monad.hs+4−8 src/Language/PureScript/TypeChecker/Rows.hs+6−23 src/Language/PureScript/TypeChecker/Skolems.hs+14−29 src/Language/PureScript/TypeChecker/Subsumption.hs+7−23 src/Language/PureScript/TypeChecker/Synonyms.hs+8−24 src/Language/PureScript/TypeChecker/Types.hs+7−12 src/Language/PureScript/TypeChecker/Unify.hs+20−37 src/Language/PureScript/TypeClassDictionaries.hs+2 src/Language/PureScript/Types.hs+5−6 src/System/IO/UTF8.hs+2−2
psc-ide-server/Main.hs−1
@@ -12,7 +12,6 @@
1212-- The server accepting commands for psc-ide
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE ConstraintKinds #-}
1615{-# LANGUAGE FlexibleContexts #-}
1716{-# LANGUAGE MultiParamTypeClasses #-}
1817{-# 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−--
111-- |
122-- Directives for PSCI.
133--
14−-----------------------------------------------------------------------------
15−
164module PSCi.Directive where
175
186import Prelude ()
@@ -116,4 +104,3 @@ help =
116104 , (Show, "import", "Show all imported modules")
117105 , (Show, "loaded", "Show all loaded modules")
118106 ]
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−
151module PSCi.IO where
162
173import 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−--
111-- |
122-- Parser for PSCI.
133--
14−-----------------------------------------------------------------------------
15−
164module PSCi.Parser
175 ( parseCommand
186 ) 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−--
111-- |
122-- Type declarations and associated basic functions for PSCI.
133--
14−-----------------------------------------------------------------------------
15−
164module PSCi.Types where
175
186import Prelude ()
purescript.cabal+16−1
@@ -264,7 +264,22 @@ library
264264
265265 System.IO.UTF8
266266
267− extensions: DataKinds
267+ extensions: ConstraintKinds
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
268283 exposed: True
269284 buildable: True
270285 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−
151{-# LANGUAGE FlexibleInstances #-}
16−{-# LANGUAGE MultiParamTypeClasses #-}
172{-# LANGUAGE TypeFamilies #-}
183
4+-- |
5+-- A replacement for WriterT IO which uses mutable references.
6+--
197module Control.Monad.Logger where
208
21−import Prelude ()
229import Prelude.Compat
2310
24−import Data.IORef
25−
2611import Control.Monad (ap)
27−import Control.Monad.IO.Class
28−import Control.Monad.Writer.Class
2912import Control.Monad.Base (MonadBase(..))
13+import Control.Monad.IO.Class
3014import Control.Monad.Trans.Control (MonadBaseControl(..))
15+import Control.Monad.Writer.Class
16+
17+import Data.IORef
3118
3219-- | A replacement for WriterT IO which uses mutable references.
3320newtype Logger w a = Logger { runLogger :: IORef w -> IO a }
src/Control/Monad/Supply.hs+5−18
@@ -1,32 +1,19 @@
1−-----------------------------------------------------------------------------
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−--
1+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
2+
113-- |
124-- Fresh variable supply
135--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE GeneralizedNewtypeDeriving #-}
17−
186module Control.Monad.Supply where
197
20−import Prelude ()
218import Prelude.Compat
229
23−import Data.Functor.Identity
24−
25−import Control.Monad.State
2610import Control.Monad.Error.Class (MonadError(..))
2711import Control.Monad.Reader
12+import Control.Monad.State
2813import Control.Monad.Writer
2914
15+import Data.Functor.Identity
16+
3017newtype SupplyT m a = SupplyT { unSupplyT :: StateT Integer m a }
3118 deriving (Functor, Applicative, Monad, MonadTrans, MonadError e, MonadWriter w, MonadReader r)
3219
src/Control/Monad/Supply/Class.hs+6−6
@@ -1,24 +1,24 @@
1−{-# LANGUAGE MultiParamTypeClasses #-}
2−
31-- |
42-- A class for monads supporting a supply of fresh names
53--
64module Control.Monad.Supply.Class where
75
6+import Prelude.Compat
7+
88import Control.Monad.Supply
99import Control.Monad.State
1010
11−class (Monad m) => MonadSupply m where
11+class Monad m => MonadSupply m where
1212 fresh :: m Integer
1313
14−instance (Monad m) => MonadSupply (SupplyT m) where
14+instance Monad m => MonadSupply (SupplyT m) where
1515 fresh = SupplyT $ do
1616 n <- get
1717 put (n + 1)
1818 return n
1919
20−instance (MonadSupply m) => MonadSupply (StateT s m) where
20+instance MonadSupply m => MonadSupply (StateT s m) where
2121 fresh = lift fresh
2222
23−freshName :: (MonadSupply m) => m String
23+freshName :: MonadSupply m => m String
2424freshName = 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−--
111-- |
122-- The main compiler module
133--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE FlexibleContexts #-}
17−{-# LANGUAGE ScopedTypeVariables #-}
18−
194module Language.PureScript
205 ( module P
216 , version
227 ) where
238
9+
10+import Control.Monad.Supply as P
11+
2412import Data.Version (Version)
2513
2614import Language.PureScript.AST as P
27−import Language.PureScript.Crash as P
2815import Language.PureScript.Comments as P
16+import Language.PureScript.Crash as P
2917import Language.PureScript.Environment as P
3018import Language.PureScript.Errors as P hiding (indent)
3119import Language.PureScript.Kinds as P
@@ -38,7 +26,6 @@ import Language.PureScript.Parser as P
3826import Language.PureScript.Pretty as P
3927import Language.PureScript.Renamer as P
4028import Language.PureScript.Sugar as P
41−import Control.Monad.Supply as P
4229import Language.PureScript.TypeChecker as P
4330import Language.PureScript.Types as P
4431
src/Language/PureScript/AST/Binders.hs+2
@@ -3,6 +3,8 @@
33--
44module Language.PureScript.AST.Binders where
55
6+import Prelude.Compat
7+
68import Language.PureScript.AST.SourcePos
79import Language.PureScript.AST.Literals
810import Language.PureScript.Names
src/Language/PureScript/AST/Declarations.hs+2−6
@@ -1,23 +1,19 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
21{-# LANGUAGE TemplateHaskell #-}
3−{-# LANGUAGE LambdaCase #-}
42
53-- |
64-- Data types for modules and declarations
75--
86module Language.PureScript.AST.Declarations where
97
10−import Prelude ()
118import Prelude.Compat
129
10+import Control.Monad.Identity
11+
1312import Data.Aeson.TH
1413import Data.List (nub, (\\))
1514import Data.Maybe (mapMaybe)
16−
1715import qualified Data.Map as M
1816
19−import Control.Monad.Identity
20−
2117import Language.PureScript.AST.Binders
2218import Language.PureScript.AST.Literals
2319import Language.PureScript.AST.Operators
src/Language/PureScript/AST/Exported.hs+3
@@ -3,7 +3,10 @@ module Language.PureScript.AST.Exported
33 , isExported
44 ) where
55
6+import Prelude.Compat
7+
68import Control.Category ((>>>))
9+
710import Data.Maybe (mapMaybe)
811
912import Language.PureScript.AST.Declarations
src/Language/PureScript/AST/Literals.hs+2−2
@@ -1,10 +1,10 @@
1−{-# LANGUAGE DeriveFunctor #-}
2−
31-- |
42-- The core functional representation for literal values.
53--
64module Language.PureScript.AST.Literals where
75
6+import Prelude.Compat
7+
88-- |
99-- Data type for literal values. Parameterised so it can be used for Exprs and
1010-- Binders.
src/Language/PureScript/AST/Operators.hs+2
@@ -5,6 +5,8 @@
55--
66module Language.PureScript.AST.Operators where
77
8+import Prelude.Compat
9+
810import Data.Aeson ((.=))
911import qualified Data.Aeson as A
1012
src/Language/PureScript/AST/SourcePos.hs−3
@@ -1,5 +1,3 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
2−{-# LANGUAGE RecordWildCards #-}
31{-# LANGUAGE OverloadedStrings #-}
42
53-- |
@@ -7,7 +5,6 @@
75--
86module Language.PureScript.AST.SourcePos where
97
10−import Prelude ()
118import Prelude.Compat
129
1310import Data.Aeson ((.=), (.:))
src/Language/PureScript/AST/Traversals.hs+5−8
@@ -1,21 +1,18 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
2−
31-- |
42-- AST traversal helpers
53--
64module Language.PureScript.AST.Traversals where
75
8−import Prelude ()
96import Prelude.Compat
107
11−import Data.Maybe (mapMaybe)
12−import Data.List (mapAccumL)
13−import Data.Foldable (fold)
14−import qualified Data.Set as S
15−
168import Control.Monad
179import Control.Arrow ((***), (+++))
1810
11+import Data.Foldable (fold)
12+import Data.List (mapAccumL)
13+import Data.Maybe (mapMaybe)
14+import qualified Data.Set as S
15+
1916import Language.PureScript.AST.Binders
2017import Language.PureScript.AST.Literals
2118import Language.PureScript.AST.Declarations
src/Language/PureScript/Bundle.hs+7−24
@@ -1,25 +1,9 @@
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.
1+-- |
2+-- Bundles compiled PureScript modules for the browser.
123--
134-- This module takes as input the individual generated modules from 'Language.PureScript.Make' and
145-- performs dead code elimination, filters empty modules,
156-- and generates the final Javascript bundle.
16−-----------------------------------------------------------------------------
17−
18−{-# LANGUAGE PatternGuards #-}
19−{-# LANGUAGE FlexibleContexts #-}
20−{-# LANGUAGE ScopedTypeVariables #-}
21−{-# LANGUAGE TupleSections #-}
22−
237module Language.PureScript.Bundle (
248 bundle
259 , ModuleIdentifier(..)
@@ -30,19 +14,18 @@ module Language.PureScript.Bundle (
3014 , getExportedIdentifiers
3115) where
3216
33−import Prelude ()
3417import Prelude.Compat
3518
36−import Data.List (nub, stripPrefix)
37−import Data.Maybe (mapMaybe, catMaybes)
19+import Control.Monad
20+import Control.Monad.Error.Class
21+
3822import Data.Generics (everything, everywhere, mkQ, mkT)
3923import Data.Graph
24+import Data.List (nub, stripPrefix)
25+import Data.Maybe (mapMaybe, catMaybes)
4026import Data.Version (showVersion)
41−
4227import qualified Data.Set as S
4328
44−import Control.Monad
45−import Control.Monad.Error.Class
4629import Language.JavaScript.Parser
4730import Language.JavaScript.Parser.AST
4831
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−-- |
12−-- A collection of modules related to code generation:
13−--
14−-- [@Language.PureScript.CodeGen.JS@] Code generator for Javascript
15−--
16−-----------------------------------------------------------------------------
17−
18−module Language.PureScript.CodeGen (module C) where
19−
20−import Language.PureScript.CodeGen.JS as C
1+-- |
2+-- A collection of modules related to code generation:
3+--
4+-- [@Language.PureScript.CodeGen.JS@] Code generator for Javascript
5+--
6+module Language.PureScript.CodeGen (module C) where
7+
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−
61-- |
72-- This module generates code in the simplified Javascript intermediate representation from Purescript code
83--
@@ -12,29 +7,28 @@ module Language.PureScript.CodeGen.JS
127 , moduleToJs
138 ) where
149
15−import Prelude ()
1610import Prelude.Compat
1711
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−
2412import Control.Arrow ((&&&))
2513import Control.Monad (replicateM, forM, void)
2614import Control.Monad.Error.Class (MonadError(..))
2715import Control.Monad.Reader (MonadReader, asks)
2816import Control.Monad.Supply.Class
2917
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+
3124import Language.PureScript.AST.SourcePos
3225import Language.PureScript.CodeGen.JS.AST as AST
3326import Language.PureScript.CodeGen.JS.Common as Common
27+import Language.PureScript.CodeGen.JS.Optimizer
3428import Language.PureScript.CoreFn
35−import Language.PureScript.Names
29+import Language.PureScript.Crash
3630import Language.PureScript.Errors
37−import Language.PureScript.CodeGen.JS.Optimizer
31+import Language.PureScript.Names
3832import Language.PureScript.Options
3933import Language.PureScript.Traversals (sndM)
4034import qualified Language.PureScript.Constants as C
src/Language/PureScript/CodeGen/JS/AST.hs+1−2
@@ -3,14 +3,13 @@
33--
44module Language.PureScript.CodeGen.JS.AST where
55
6−import Prelude ()
76import Prelude.Compat
87
98import Control.Monad.Identity
109
10+import Language.PureScript.AST (SourceSpan(..))
1111import Language.PureScript.Comments
1212import Language.PureScript.Traversals
13−import Language.PureScript.AST (SourceSpan(..))
1413
1514-- |
1615-- Built-in unary operators
src/Language/PureScript/CodeGen/JS/Common.hs+2
@@ -3,6 +3,8 @@
33--
44module Language.PureScript.CodeGen.JS.Common where
55
6+import Prelude.Compat
7+
68import Data.Char
79import Data.List (intercalate)
810
src/Language/PureScript/CodeGen/JS/Optimizer.hs+5−9
@@ -1,5 +1,3 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−
31-- |
42-- This module optimizes code in the simplified-Javascript intermediate representation.
53--
@@ -23,22 +21,20 @@
2321--
2422module Language.PureScript.CodeGen.JS.Optimizer (optimize) where
2523
26−import Prelude ()
2724import Prelude.Compat
2825
2926import Control.Monad.Reader (MonadReader, ask, asks)
3027import Control.Monad.Supply.Class (MonadSupply)
3128
3229import Language.PureScript.CodeGen.JS.AST
33−import Language.PureScript.Options
34−import qualified Language.PureScript.Constants as C
35−
30+import Language.PureScript.CodeGen.JS.Optimizer.Blocks
3631import Language.PureScript.CodeGen.JS.Optimizer.Common
37−import Language.PureScript.CodeGen.JS.Optimizer.TCO
38−import Language.PureScript.CodeGen.JS.Optimizer.MagicDo
3932import Language.PureScript.CodeGen.JS.Optimizer.Inliner
33+import Language.PureScript.CodeGen.JS.Optimizer.MagicDo
34+import Language.PureScript.CodeGen.JS.Optimizer.TCO
4035import 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
4238
4339-- |
4440-- 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−--
111-- |
122-- Optimizer steps for simplifying Javascript blocks
133--
14−-----------------------------------------------------------------------------
15−
164module Language.PureScript.CodeGen.JS.Optimizer.Blocks
175 ( collapseNestedBlocks
186 , collapseNestedIfs
197 ) where
208
9+import Prelude.Compat
10+
2111import Language.PureScript.CodeGen.JS.AST
2212
2313-- |
src/Language/PureScript/CodeGen/JS/Optimizer/Common.hs+2
@@ -3,6 +3,8 @@
33--
44module Language.PureScript.CodeGen.JS.Optimizer.Common where
55
6+import Prelude.Compat
7+
68import Data.Maybe (fromMaybe)
79
810import Language.PureScript.Crash
src/Language/PureScript/CodeGen/JS/Optimizer/Inliner.hs+2−2
@@ -12,16 +12,16 @@ module Language.PureScript.CodeGen.JS.Optimizer.Inliner
1212 , evaluateIifes
1313 ) where
1414
15−import Prelude ()
1615import Prelude.Compat
1716
1817import Control.Monad.Supply.Class (MonadSupply, freshName)
18+
1919import Data.Maybe (fromMaybe)
2020
2121import Language.PureScript.CodeGen.JS.AST
2222import Language.PureScript.CodeGen.JS.Common
23−import Language.PureScript.Names
2423import Language.PureScript.CodeGen.JS.Optimizer.Common
24+import Language.PureScript.Names
2525import qualified Language.PureScript.Constants as C
2626
2727-- TODO: Potential bug:
src/Language/PureScript/CodeGen/JS/Optimizer/MagicDo.hs+2
@@ -4,6 +4,8 @@
44--
55module Language.PureScript.CodeGen.JS.Optimizer.MagicDo (magicDo) where
66
7+import Prelude.Compat
8+
79import Data.List (nub)
810import Data.Maybe (fromJust, isJust)
911
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−--
111-- |
122-- This module implements tail call elimination.
133--
14−-----------------------------------------------------------------------------
15−
164module Language.PureScript.CodeGen.JS.Optimizer.TCO (tco) where
175
6+import Prelude.Compat
7+
188import Data.Monoid
199
2010import 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−--
111-- |
122-- Removes unused variables
133--
14−-----------------------------------------------------------------------------
15−
164module Language.PureScript.CodeGen.JS.Optimizer.Unused
175 ( removeCodeAfterReturnStatements
186 , removeUnusedArg
197 , removeUndefinedApp
208 ) where
219
10+import Prelude.Compat
11+
2212import Language.PureScript.CodeGen.JS.AST
2313import Language.PureScript.CodeGen.JS.Optimizer.Common
24−
2514import qualified Language.PureScript.Constants as C
2615
2716removeCodeAfterReturnStatements :: JS -> JS
src/Language/PureScript/Comments.hs+2
@@ -5,6 +5,8 @@
55--
66module Language.PureScript.Comments where
77
8+import Prelude.Compat
9+
810import Data.Aeson.TH
911
1012data Comment
src/Language/PureScript/Constants.hs+2−3
@@ -1,9 +1,8 @@
1−{-# LANGUAGE DataKinds #-}
2−{-# LANGUAGE PatternSynonyms #-}
3−
41-- | Various constants which refer to things in the Prelude
52module Language.PureScript.Constants where
63
4+import Prelude.Compat
5+
76import Language.PureScript.Names
87
98-- Operators
src/Language/PureScript/CoreFn.hs+1−1
@@ -5,11 +5,11 @@ module Language.PureScript.CoreFn (
55 module C
66) where
77
8+import Language.PureScript.AST.Literals as C
89import Language.PureScript.CoreFn.Ann as C
910import Language.PureScript.CoreFn.Binders as C
1011import Language.PureScript.CoreFn.Desugar as C
1112import Language.PureScript.CoreFn.Expr as C
12−import Language.PureScript.AST.Literals as C
1313import Language.PureScript.CoreFn.Meta as C
1414import Language.PureScript.CoreFn.Module as C
1515import 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
16−
17−import Language.PureScript.AST.SourcePos
18−import Language.PureScript.CoreFn.Meta
19−import Language.PureScript.Types
20−import Language.PureScript.Comments
21−
22−-- |
23−-- Type alias for basic annotations
24−--
25−type Ann = (Maybe SourceSpan, [Comment], Maybe Type, Maybe Meta)
26−
27−-- |
28−-- Initial annotation with no metadata
29−--
30−nullAnn :: Ann
31−nullAnn = (Nothing, [], Nothing, Nothing)
32−
33−-- |
34−-- Remove the comments from an annotation
35−--
36−removeComments :: Ann -> Ann
37−removeComments (ss, _, ty, meta) = (ss, [], ty, meta)
1+module Language.PureScript.CoreFn.Ann where
2+
3+import Prelude.Compat
4+
5+import Language.PureScript.AST.SourcePos
6+import Language.PureScript.Comments
7+import Language.PureScript.CoreFn.Meta
8+import Language.PureScript.Types
9+
10+-- |
11+-- Type alias for basic annotations
12+--
13+type Ann = (Maybe SourceSpan, [Comment], Maybe Type, Maybe Meta)
14+
15+-- |
16+-- Initial annotation with no metadata
17+--
18+nullAnn :: Ann
19+nullAnn = (Nothing, [], Nothing, Nothing)
20+
21+-- |
22+-- Remove the comments from an annotation
23+--
24+removeComments :: Ann -> Ann
25+removeComments (ss, _, ty, meta) = (ss, [], ty, meta)
src/Language/PureScript/CoreFn/Binders.hs+2−2
@@ -1,10 +1,10 @@
1−{-# LANGUAGE DeriveFunctor #-}
2−
31-- |
42-- The core functional representation for binders
53--
64module Language.PureScript.CoreFn.Binders where
75
6+import Prelude.Compat
7+
88import Language.PureScript.AST.Literals
99import Language.PureScript.Names
1010
src/Language/PureScript/CoreFn/Desugar.hs+4−6
@@ -1,30 +1,28 @@
11module Language.PureScript.CoreFn.Desugar (moduleToCoreFn) where
22
3−import Prelude ()
43import Prelude.Compat
54
5+import Control.Arrow (second, (***))
66
77import Data.Function (on)
88import Data.List (sort, sortBy, nub)
99import Data.Maybe (mapMaybe)
1010import qualified Data.Map as M
1111
12−import Control.Arrow (second, (***))
13−
14−import Language.PureScript.Crash
12+import Language.PureScript.AST.Literals
1513import Language.PureScript.AST.SourcePos
1614import Language.PureScript.AST.Traversals
15+import Language.PureScript.Comments
1716import Language.PureScript.CoreFn.Ann
1817import Language.PureScript.CoreFn.Binders
1918import Language.PureScript.CoreFn.Expr
20−import Language.PureScript.AST.Literals
2119import Language.PureScript.CoreFn.Meta
2220import Language.PureScript.CoreFn.Module
21+import Language.PureScript.Crash
2322import Language.PureScript.Environment
2423import Language.PureScript.Names
2524import Language.PureScript.Sugar.TypeClasses (typeClassMemberName, superClassDictionaryNames)
2625import Language.PureScript.Types
27−import Language.PureScript.Comments
2826import qualified Language.PureScript.AST as A
2927
3028-- |
src/Language/PureScript/CoreFn/Expr.hs+3−3
@@ -1,14 +1,14 @@
1−{-# LANGUAGE DeriveFunctor #-}
2−
31-- |
42-- The core functional representation
53--
64module Language.PureScript.CoreFn.Expr where
75
6+import Prelude.Compat
7+
88import Control.Arrow ((***))
99
10−import Language.PureScript.CoreFn.Binders
1110import Language.PureScript.AST.Literals
11+import Language.PureScript.CoreFn.Binders
1212import Language.PureScript.Names
1313
1414-- |
src/Language/PureScript/CoreFn/Meta.hs+2
@@ -3,6 +3,8 @@
33--
44module Language.PureScript.CoreFn.Meta where
55
6+import Prelude.Compat
7+
68import Language.PureScript.Names
79
810-- |
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−
151module Language.PureScript.CoreFn.Module where
162
3+import Prelude.Compat
4+
175import Language.PureScript.Comments
186import Language.PureScript.CoreFn.Expr
197import Language.PureScript.Names
208import Language.PureScript.Types
219
10+-- |
11+-- The CoreFn module representation
12+--
2213data Module a = Module
2314 { moduleComments :: [Comment]
2415 , moduleName :: ModuleName
src/Language/PureScript/CoreFn/Traversals.hs+3−1
@@ -3,11 +3,13 @@
33--
44module Language.PureScript.CoreFn.Traversals where
55
6+import Prelude.Compat
7+
68import Control.Arrow (second, (***), (+++))
79
10+import Language.PureScript.AST.Literals
811import Language.PureScript.CoreFn.Binders
912import Language.PureScript.CoreFn.Expr
10−import Language.PureScript.AST.Literals
1113
1214everywhereOnValues :: (Bind a -> Bind a) ->
1315 (Expr a -> Expr a) ->
src/Language/PureScript/Crash.hs+11−9
@@ -1,9 +1,11 @@
1−module Language.PureScript.Crash where
2−
3−-- | Exit with an error message and a crash report link.
4−internalError :: String -> a
5−internalError =
6− error
7− . ("An internal error ocurred during compilation: " ++)
8− . (++ "\nPlease report this at https://github.com/purescript/purescript/issues")
9− . show
1+module Language.PureScript.Crash where
2+
3+import Prelude.Compat
4+
5+-- | Exit with an error message and a crash report link.
6+internalError :: String -> a
7+internalError =
8+ error
9+ . ("An internal error ocurred during compilation: " ++)
10+ . (++ "\nPlease report this at https://github.com/purescript/purescript/issues")
11+ . show
src/Language/PureScript/Docs.hs+4−4
@@ -6,9 +6,9 @@ module Language.PureScript.Docs (
66 module Docs
77) where
88
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
129import Language.PureScript.Docs.Convert as Docs
13−import Language.PureScript.Docs.Render as Docs
1410import 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−
41module Language.PureScript.Docs.AsMarkdown
52 ( renderModulesAsMarkdown
63 , Docs
@@ -9,19 +6,18 @@ module Language.PureScript.Docs.AsMarkdown
96 , codeToString
107 ) where
118
12−import Prelude ()
139import Prelude.Compat
1410
1511import Control.Monad (unless, zipWithM_)
16−import Control.Monad.Writer (Writer, tell, execWriter)
1712import Control.Monad.Error.Class (MonadError)
13+import Control.Monad.Writer (Writer, tell, execWriter)
14+
1815import Data.Foldable (for_)
1916import Data.List (partition)
2017
21−import qualified Language.PureScript as P
22−
23−import Language.PureScript.Docs.Types
2418import Language.PureScript.Docs.RenderedCode
19+import Language.PureScript.Docs.Types
20+import qualified Language.PureScript as P
2521import qualified Language.PureScript.Docs.Convert as Convert
2622import qualified Language.PureScript.Docs.Render as Render
2723
src/Language/PureScript/Docs/Convert.hs+5−8
@@ -1,6 +1,4 @@
1−{-# LANGUAGE TupleSections #-}
21{-# LANGUAGE OverloadedStrings #-}
3−{-# LANGUAGE FlexibleContexts #-}
42
53-- | Functions for converting PureScript ASTs into values of the data types
64-- from Language.PureScript.Docs.
@@ -11,24 +9,23 @@ module Language.PureScript.Docs.Convert
119 , collectBookmarks
1210 ) where
1311
14−import Prelude ()
1512import Prelude.Compat
1613
1714import Control.Arrow ((&&&), second)
1815import Control.Category ((>>>))
1916import Control.Monad
17+import Control.Monad.Error.Class (MonadError)
2018import Control.Monad.State (runStateT)
2119import Control.Monad.Writer.Strict (runWriterT)
22−import Control.Monad.Error.Class (MonadError)
2320import qualified Data.Map as Map
2421
25−import Text.Parsec (eof)
26−import qualified Language.PureScript as P
27−import qualified Language.PureScript.Constants as C
28−
2922import Language.PureScript.Docs.Convert.ReExports (updateReExports)
3023import Language.PureScript.Docs.Convert.Single (convertSingleModule, collectBookmarks)
3124import 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)
3229
3330-- |
3431-- 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−
51module Language.PureScript.Docs.Convert.ReExports
62 ( updateReExports
73 ) where
84
9−import Prelude ()
105import Prelude.Compat
116
7+import Control.Arrow ((&&&), first, second)
128import Control.Monad
13−import Control.Monad.Trans.State.Strict (execState)
9+import Control.Monad.Reader.Class (MonadReader, ask)
1410import Control.Monad.State.Class (MonadState, gets, modify)
1511import Control.Monad.Trans.Reader (runReaderT)
16−import Control.Monad.Reader.Class (MonadReader, ask)
17−import Control.Arrow ((&&&), first, second)
12+import Control.Monad.Trans.State.Strict (execState)
13+
1814import Data.Either
19−import Data.Maybe (mapMaybe)
2015import Data.Map (Map)
21−import qualified Data.Map as Map
16+import Data.Maybe (mapMaybe)
2217import Data.Monoid ((<>))
23−
24−import qualified Language.PureScript as P
18+import qualified Data.Map as Map
2519
2620import Language.PureScript.Docs.Types
21+import qualified Language.PureScript as P
2722
2823-- |
2924-- Given:
src/Language/PureScript/Docs/Convert/Single.hs+4−9
@@ -1,26 +1,21 @@
1−{-# LANGUAGE TupleSections #-}
21{-# LANGUAGE OverloadedStrings #-}
3−{-# LANGUAGE RecordWildCards #-}
4−{-# LANGUAGE ViewPatterns #-}
5−{-# LANGUAGE FlexibleContexts #-}
62
73module Language.PureScript.Docs.Convert.Single
84 ( convertSingleModule
95 , collectBookmarks
106 ) where
117
12−import Prelude ()
138import Prelude.Compat
14−import Data.Maybe (mapMaybe, isNothing)
159
16−import Control.Monad
1710import Control.Category ((>>>))
11+import Control.Monad
12+
1813import Data.Either
1914import Data.List (nub, isPrefixOf, isSuffixOf)
20−
21−import qualified Language.PureScript as P
15+import Data.Maybe (mapMaybe, isNothing)
2216
2317import Language.PureScript.Docs.Types
18+import qualified Language.PureScript as P
2419
2520-- |
2621-- 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−
41module Language.PureScript.Docs.ParseAndBookmark
52 ( parseAndBookmark
63 ) where
74
8−import Prelude ()
95import Prelude.Compat
106
11−import qualified Data.Map as M
127import Control.Arrow (first)
13−
148import Control.Monad.Error.Class (MonadError(..))
159import Control.Monad.IO.Class (MonadIO(..))
1610
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
1816
1917import System.IO.UTF8 (readUTF8File)
2018
21−import qualified Language.PureScript as P
22−import Language.PureScript.Docs.Types
23−import Language.PureScript.Docs.Convert (collectBookmarks)
19+import Web.Bower.PackageMeta (PackageName)
2420
2521-- |
2622-- Given:
src/Language/PureScript/Docs/Render.hs+6−5
@@ -1,6 +1,5 @@
1−{-# LANGUAGE RecordWildCards #-}
2−
3−-- | Functions for creating `RenderedCode` values from data types in
1+-- |
2+-- Functions for creating `RenderedCode` values from data types in
43-- Language.PureScript.Docs.Types.
54--
65-- These functions are the ones that are used in markdown/html documentation
@@ -10,13 +9,15 @@
109
1110module Language.PureScript.Docs.Render where
1211
12+import Prelude.Compat
13+
1314import Data.Maybe (maybeToList)
1415import Data.Monoid ((<>))
15−import qualified Language.PureScript as P
1616
17−import Language.PureScript.Docs.Types
1817import Language.PureScript.Docs.RenderedCode
18+import Language.PureScript.Docs.Types
1919import Language.PureScript.Docs.Utils.MonoidExtras
20+import qualified Language.PureScript as P
2021
2122renderDeclaration :: Declaration -> RenderedCode
2223renderDeclaration = renderDeclarationWithOptions defaultRenderTypeOptions
src/Language/PureScript/Docs/RenderedCode.hs+8−11
@@ -1,11 +1,8 @@
1−
2−-- | Data types and functions for representing a simplified form of PureScript
3−-- code, intended for use in e.g. HTML documentation.
4−
5−module Language.PureScript.Docs.RenderedCode (
6− module RenderedCode
7−) where
8−
9−import Language.PureScript.Docs.RenderedCode.Types as RenderedCode
10−import Language.PureScript.Docs.RenderedCode.Render as RenderedCode
11−
1+
2+-- | Data types and functions for representing a simplified form of PureScript
3+-- code, intended for use in e.g. HTML documentation.
4+
5+module Language.PureScript.Docs.RenderedCode (module RenderedCode) where
6+
7+import Language.PureScript.Docs.RenderedCode.Types as RenderedCode
8+import Language.PureScript.Docs.RenderedCode.Render as RenderedCode
src/Language/PureScript/Docs/RenderedCode/Render.hs+25−24
@@ -1,33 +1,31 @@
11-- | Functions for producing RenderedCode values from PureScript Type values.
22
3−module Language.PureScript.Docs.RenderedCode.Render (
4− renderType,
5− renderTypeAtom,
6− renderRow,
7− renderKind,
8− RenderTypeOptions(..),
9− defaultRenderTypeOptions,
10− renderTypeWithOptions
11−) where
12−
13−import Prelude ()
3+module Language.PureScript.Docs.RenderedCode.Render
4+ ( renderType
5+ , renderTypeAtom
6+ , renderRow
7+ , renderKind
8+ , RenderTypeOptions(..)
9+ , defaultRenderTypeOptions
10+ , renderTypeWithOptions
11+ ) where
12+
1413import Prelude.Compat
1514
16−import Data.Monoid ((<>))
1715import Data.Maybe (fromMaybe)
16+import Data.Monoid ((<>))
1817
1918import Control.Arrow ((<+>))
20−import Control.PatternArrows
19+import Control.PatternArrows as PA
2120
2221import 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−
2922import Language.PureScript.Docs.RenderedCode.Types
3023import 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
3129
3230typeLiterals :: Pattern () Type RenderedCode
3331typeLiterals = mkPattern match
@@ -184,9 +182,10 @@ renderKind = kind . prettyPrintKind
184182-- Render code representing a Type, as it should appear inside parentheses
185183--
186184renderTypeAtom :: Type -> RenderedCode
187−renderTypeAtom =
188− fromMaybe (internalError "Incomplete pattern") . pattern matchTypeAtom () . preprocessType defaultRenderTypeOptions
189−
185+renderTypeAtom
186+ = fromMaybe (internalError "Incomplete pattern")
187+ . PA.pattern matchTypeAtom ()
188+ . preprocessType defaultRenderTypeOptions
190189
191190-- |
192191-- Render code representing a Type
@@ -207,5 +206,7 @@ defaultRenderTypeOptions =
207206 }
208207
209208renderTypeWithOptions :: RenderTypeOptions -> Type -> RenderedCode
210−renderTypeWithOptions opts =
211− fromMaybe (internalError "Incomplete pattern") . pattern matchType () . preprocessType opts
209+renderTypeWithOptions 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
3232 , keywordFixity
3333 ) where
3434
35−import Prelude ()
3635import Prelude.Compat
3736
38−import qualified Data.Aeson as A
39−import Data.Aeson.BetterErrors
4037import Control.Monad.Error.Class (MonadError(..))
4138
39+import Data.Aeson.BetterErrors
40+import qualified Data.Aeson as A
41+
4242import qualified Language.PureScript as P
4343
4444-- |
src/Language/PureScript/Docs/Types.hs+9−11
@@ -1,7 +1,4 @@
1−{-# LANGUAGE RecordWildCards #-}
21{-# LANGUAGE OverloadedStrings #-}
3−{-# LANGUAGE TupleSections #-}
4−{-# LANGUAGE RankNTypes #-}
52
63module Language.PureScript.Docs.Types
74 ( module Language.PureScript.Docs.Types
@@ -9,25 +6,26 @@ module Language.PureScript.Docs.Types
96 )
107 where
118
12−import Prelude ()
139import Prelude.Compat
1410
1511import Control.Arrow (first, (***))
1612import Control.Monad (when)
17−import Data.Maybe (mapMaybe)
18−import Data.Version
13+
1914import Data.Aeson ((.=))
20−import qualified Data.Aeson as A
2115import Data.Aeson.BetterErrors
22−import Text.ParserCombinators.ReadP (readP_to_S)
23−import Data.Text (Text)
2416import 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
2521import qualified Data.Text as T
2622
27−import Web.Bower.PackageMeta hiding (Version, displayError)
28−
2923import qualified Language.PureScript as P
3024
25+import Text.ParserCombinators.ReadP (readP_to_S)
26+
27+import Web.Bower.PackageMeta hiding (Version, displayError)
28+
3129import Language.PureScript.Docs.RenderedCode as ReExports
3230 (RenderedCode, asRenderedCode,
3331 ContainingModule(..), asContainingModule,
src/Language/PureScript/Environment.hs+4−2
@@ -3,11 +3,13 @@
33
44module Language.PureScript.Environment where
55
6−import Data.Maybe (fromMaybe)
6+import Prelude.Compat
7+
78import Data.Aeson.TH
9+import Data.Maybe (fromMaybe)
10+import qualified Data.Aeson as A
811import qualified Data.Map as M
912import qualified Data.Text as T
10−import qualified Data.Aeson as A
1113
1214import Language.PureScript.Crash
1315import Language.PureScript.Kinds
src/Language/PureScript/Errors.hs+13−18
@@ -1,41 +1,36 @@
11{-# LANGUAGE GeneralizedNewtypeDeriving #-}
2−{-# LANGUAGE FlexibleContexts #-}
3−{-# LANGUAGE MultiParamTypeClasses #-}
42{-# LANGUAGE NamedFieldPuns #-}
53
64module Language.PureScript.Errors where
75
8−import Prelude ()
96import Prelude.Compat
107
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+
1214import Data.Char (isSpace)
1315import Data.Either (lefts, rights)
14−import Data.List (intercalate, transpose, nub, nubBy, sortBy, partition)
1516import Data.Foldable (fold)
17+import Data.List (intercalate, transpose, nub, nubBy, sortBy, partition)
1618import Data.Maybe (maybeToList)
17−
19+import Data.Ord (comparing)
1820import qualified Data.Map as M
1921
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
2722import Language.PureScript.AST
23+import Language.PureScript.Crash
24+import Language.PureScript.Kinds
25+import Language.PureScript.Names
2826import Language.PureScript.Pretty
2927import Language.PureScript.Types
30−import Language.PureScript.Names
31−import Language.PureScript.Kinds
32−import qualified Language.PureScript.Constants as C
3328import qualified Language.PureScript.Bundle as Bundle
34−
35−import qualified Text.PrettyPrint.Boxes as Box
29+import qualified Language.PureScript.Constants as C
3630
3731import qualified Text.Parsec as P
3832import qualified Text.Parsec.Error as PE
33+import qualified Text.PrettyPrint.Boxes as Box
3934import Text.Parsec.Error (Message(..))
4035
4136-- | 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−
151{-# LANGUAGE TemplateHaskell #-}
162
173module Language.PureScript.Errors.JSON where
184
19−import Prelude ()
205import Prelude.Compat
216
227import qualified Data.Aeson.TH as A
src/Language/PureScript/Externs.hs+7−10
@@ -1,9 +1,8 @@
1−{-# LANGUAGE RecordWildCards #-}
2−{-# LANGUAGE PatternGuards #-}
31{-# LANGUAGE TemplateHaskell #-}
42
53-- |
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.
76--
87module Language.PureScript.Externs
98 ( ExternsFile(..)
@@ -14,24 +13,22 @@ module Language.PureScript.Externs
1413 , applyExternsFileToEnvironment
1514 ) where
1615
17−import Prelude ()
1816import Prelude.Compat
1917
18+import Data.Aeson.TH
19+import Data.Foldable (fold)
2020import Data.List (find, foldl')
2121import Data.Maybe (mapMaybe, maybeToList, fromMaybe)
22−import Data.Foldable (fold)
2322import Data.Version (showVersion)
24−import Data.Aeson.TH
25−
2623import qualified Data.Map as M
2724
28−import Language.PureScript.Crash
2925import Language.PureScript.AST
26+import Language.PureScript.Crash
3027import Language.PureScript.Environment
31−import Language.PureScript.Names
32−import Language.PureScript.Types
3328import Language.PureScript.Kinds
29+import Language.PureScript.Names
3430import Language.PureScript.TypeClassDictionaries
31+import Language.PureScript.Types
3532
3633import Paths_purescript as Paths
3734
src/Language/PureScript/Ide.hs−4
@@ -12,13 +12,9 @@
1212-- Interface for the psc-ide-server
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE ConstraintKinds #-}
16−{-# LANGUAGE FlexibleContexts #-}
17−{-# LANGUAGE MultiParamTypeClasses #-}
1815{-# LANGUAGE OverloadedStrings #-}
1916{-# LANGUAGE PackageImports #-}
2017{-# LANGUAGE TemplateHaskell #-}
21−{-# LANGUAGE TupleSections #-}
2218
2319module Language.PureScript.Ide
2420 ( handleCommand
src/Language/PureScript/Ide/CaseSplit.hs−6
@@ -12,14 +12,8 @@
1212-- Casesplitting and adding function clauses
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE ConstraintKinds #-}
16−{-# LANGUAGE DataKinds #-}
17−{-# LANGUAGE FlexibleContexts #-}
18−{-# LANGUAGE LambdaCase #-}
19−{-# LANGUAGE MultiParamTypeClasses #-}
2015{-# LANGUAGE OverloadedStrings #-}
2116{-# LANGUAGE PackageImports #-}
22−{-# LANGUAGE RecordWildCards #-}
2317
2418module Language.PureScript.Ide.CaseSplit
2519 ( WildcardAnnotations()
src/Language/PureScript/Ide/Command.hs−2
@@ -12,9 +12,7 @@
1212-- Datatypes for the commands psc-ide accepts
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE MultiParamTypeClasses #-}
1615{-# LANGUAGE OverloadedStrings #-}
17−{-# LANGUAGE ScopedTypeVariables #-}
1816
1917module Language.PureScript.Ide.Command where
2018
src/Language/PureScript/Ide/Error.hs+1
@@ -17,6 +17,7 @@ module Language.PureScript.Ide.Error
1717 (ErrorMsg, PscIdeError(..), textError)
1818 where
1919
20+import Prelude.Compat
2021import Data.Aeson
2122import Data.Monoid
2223import Data.Text (Text, pack)
src/Language/PureScript/Ide/Externs.hs−4
@@ -12,11 +12,7 @@
1212-- Handles externs files for psc-ide
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE FlexibleContexts #-}
16−{-# LANGUAGE MultiParamTypeClasses #-}
1715{-# LANGUAGE OverloadedStrings #-}
18−{-# LANGUAGE RecordWildCards #-}
19−{-# LANGUAGE ScopedTypeVariables #-}
2016
2117module Language.PureScript.Ide.Externs
2218 ( ExternDecl(..),
src/Language/PureScript/Ide/Filter.hs−1
@@ -14,7 +14,6 @@
1414
1515{-# LANGUAGE GeneralizedNewtypeDeriving #-}
1616{-# LANGUAGE OverloadedStrings #-}
17−{-# LANGUAGE ScopedTypeVariables #-}
1817
1918module Language.PureScript.Ide.Filter
2019 ( Filter
src/Language/PureScript/Ide/Imports.hs+1−4
@@ -12,10 +12,6 @@
1212-- Provides functionality to manage imports
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE ConstraintKinds #-}
16−{-# LANGUAGE FlexibleContexts #-}
17−{-# LANGUAGE LambdaCase #-}
18−{-# LANGUAGE MultiParamTypeClasses #-}
1915{-# LANGUAGE OverloadedStrings #-}
2016{-# LANGUAGE PackageImports #-}
2117
@@ -34,6 +30,7 @@ module Language.PureScript.Ide.Imports
3430 )
3531 where
3632
33+import Prelude.Compat
3734import Control.Applicative ((<|>))
3835import Control.Monad.Error.Class
3936import Control.Monad.IO.Class
src/Language/PureScript/Ide/Matcher.hs−1
@@ -14,7 +14,6 @@
1414
1515{-# LANGUAGE GeneralizedNewtypeDeriving #-}
1616{-# LANGUAGE OverloadedStrings #-}
17−{-# LANGUAGE ScopedTypeVariables #-}
1817
1918module Language.PureScript.Ide.Matcher
2019 ( Matcher
src/Language/PureScript/Ide/Pursuit.hs−1
@@ -13,7 +13,6 @@
1313-----------------------------------------------------------------------------
1414
1515{-# LANGUAGE OverloadedStrings #-}
16−{-# LANGUAGE ScopedTypeVariables #-}
1716
1817module Language.PureScript.Ide.Pursuit where
1918
src/Language/PureScript/Ide/Rebuild.hs+2−5
@@ -1,13 +1,10 @@
1−{-# LANGUAGE ConstraintKinds #-}
2−{-# LANGUAGE FlexibleContexts #-}
3−{-# LANGUAGE MultiParamTypeClasses #-}
41{-# LANGUAGE OverloadedStrings #-}
52{-# LANGUAGE PackageImports #-}
6−{-# LANGUAGE RecordWildCards #-}
7−{-# LANGUAGE TupleSections #-}
83
94module Language.PureScript.Ide.Rebuild where
105
6+import Prelude.Compat
7+
118import Language.PureScript.Ide.Error
129import Language.PureScript.Ide.State
1310import Language.PureScript.Ide.Types
src/Language/PureScript/Ide/Reexports.hs−2
@@ -14,8 +14,6 @@
1414-----------------------------------------------------------------------------
1515
1616{-# LANGUAGE OverloadedStrings #-}
17−{-# LANGUAGE PatternGuards #-}
18−{-# LANGUAGE TupleSections #-}
1917
2018module Language.PureScript.Ide.Reexports where
2119
src/Language/PureScript/Ide/SourceFile.hs−2
@@ -12,8 +12,6 @@
1212-- Getting declarations from PureScript sourcefiles
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE FlexibleContexts #-}
16−{-# LANGUAGE MultiParamTypeClasses #-}
1715{-# LANGUAGE OverloadedStrings #-}
1816
1917module Language.PureScript.Ide.SourceFile where
src/Language/PureScript/Ide/State.hs−4
@@ -12,13 +12,9 @@
1212-- Functions to access psc-ide's state
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE ConstraintKinds #-}
16−{-# LANGUAGE FlexibleContexts #-}
17−{-# LANGUAGE MultiParamTypeClasses #-}
1815{-# LANGUAGE OverloadedStrings #-}
1916{-# LANGUAGE PackageImports #-}
2017{-# LANGUAGE TemplateHaskell #-}
21−{-# LANGUAGE TupleSections #-}
2218
2319module Language.PureScript.Ide.State where
2420
src/Language/PureScript/Ide/Types.hs−4
@@ -12,11 +12,7 @@
1212-- Type definitions for psc-ide
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE ConstraintKinds #-}
16−{-# LANGUAGE FlexibleContexts #-}
17−{-# LANGUAGE GeneralizedNewtypeDeriving #-}
1815{-# LANGUAGE OverloadedStrings #-}
19−{-# LANGUAGE ScopedTypeVariables #-}
2016
2117module Language.PureScript.Ide.Types where
2218
src/Language/PureScript/Ide/Util.hs+1
@@ -16,6 +16,7 @@
1616
1717module Language.PureScript.Ide.Util where
1818
19+import Prelude.Compat
1920import Data.Aeson
2021import Data.Text (Text)
2122import qualified Data.Text as T
src/Language/PureScript/Kinds.hs−1
@@ -2,7 +2,6 @@
22
33module Language.PureScript.Kinds where
44
5−import Prelude ()
65import Prelude.Compat
76
87import 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−
51-- |
62-- This module implements a simple linting pass on the PureScript AST.
73--
84module Language.PureScript.Linter (lint, module L) where
95
10−import Prelude ()
116import Prelude.Compat
127
8+import Control.Monad.Writer.Class
9+
1310import Data.List (nub, (\\))
1411import Data.Maybe (mapMaybe)
1512import Data.Monoid
16−
1713import qualified Data.Set as S
1814
19−import Control.Monad.Writer.Class
20−
21−import Language.PureScript.Crash
2215import Language.PureScript.AST
23−import Language.PureScript.Names
16+import Language.PureScript.Crash
2417import Language.PureScript.Errors
25−import Language.PureScript.Types
2618import Language.PureScript.Linter.Exhaustive as L
2719import Language.PureScript.Linter.Imports as L
20+import Language.PureScript.Names
21+import Language.PureScript.Types
2822
2923-- | Lint the PureScript AST.
3024-- |
src/Language/PureScript/Linter/Exhaustive.hs+11−15
@@ -1,6 +1,3 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−
41-- |
52-- Module for exhaustivity checking over pattern matching definitions
63-- The algorithm analyses the clauses of a definition one by one from top
@@ -11,31 +8,30 @@ module Language.PureScript.Linter.Exhaustive
118 ( checkExhaustiveExpr
129 ) where
1310
14−import Prelude ()
1511import Prelude.Compat
1612
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)
2313import Control.Applicative
2414import Control.Arrow (first, second)
15+import Control.Monad (unless)
2516import Control.Monad.Writer.Class
2617
27−import Language.PureScript.Crash
28−import qualified Language.PureScript.Constants as C
18+import Data.Function (on)
19+import Data.List (foldl', sortBy, nub)
20+import Data.Maybe (fromMaybe)
21+import qualified Data.Map as M
22+
2923import Language.PureScript.AST.Binders
30−import Language.PureScript.AST.Literals
3124import Language.PureScript.AST.Declarations
25+import Language.PureScript.AST.Literals
26+import Language.PureScript.Crash
3227import Language.PureScript.Environment
33−import Language.PureScript.Names as P
28+import Language.PureScript.Errors
3429import Language.PureScript.Kinds
30+import Language.PureScript.Names as P
3531import Language.PureScript.Pretty.Values (prettyPrintBinderAtom)
3632import Language.PureScript.Traversals
3733import Language.PureScript.Types as P
38−import Language.PureScript.Errors
34+import qualified Language.PureScript.Constants as C
3935
4036-- | There are two modes of failure for the redundancy check:
4137--
src/Language/PureScript/Linter/Imports.hs+1−7
@@ -1,13 +1,9 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
2−{-# LANGUAGE FlexibleContexts #-}
3−
41module Language.PureScript.Linter.Imports
52 ( lintImports
63 , Name(..)
74 , UsedImports()
85 ) where
96
10−import Prelude ()
117import Prelude.Compat
128
139import Control.Monad (unless, when)
@@ -23,12 +19,10 @@ import qualified Data.Map as M
2319import Language.PureScript.AST.Declarations
2420import Language.PureScript.AST.SourcePos
2521import Language.PureScript.Crash
26−import Language.PureScript.Names as P
27−
2822import Language.PureScript.Errors
23+import Language.PureScript.Names as P
2924import Language.PureScript.Sugar.Names.Env
3025import Language.PureScript.Sugar.Names.Imports
31−
3226import qualified Language.PureScript.Constants as C
3327
3428-- | Imported name used in some type or expression.
src/Language/PureScript/Make.hs+27−37
@@ -1,10 +1,4 @@
1−{-# LANGUAGE FlexibleContexts #-}
21{-# LANGUAGE GeneralizedNewtypeDeriving #-}
3−{-# LANGUAGE TupleSections #-}
4−{-# LANGUAGE RankNTypes #-}
5−{-# LANGUAGE RecordWildCards #-}
6−{-# LANGUAGE ScopedTypeVariables #-}
7−{-# LANGUAGE MultiParamTypeClasses #-}
82{-# LANGUAGE TypeFamilies #-}
93
104module Language.PureScript.Make
@@ -23,56 +17,41 @@ module Language.PureScript.Make
2317 , buildMakeActions
2418 ) where
2519
26−import Prelude ()
2720import Prelude.Compat
2821
2922import Control.Applicative ((<|>))
23+import Control.Concurrent.Lifted as C
3024import Control.Monad hiding (sequence)
25+import Control.Monad.Base (MonadBase(..))
3126import 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
3527import Control.Monad.IO.Class
36−import Control.Monad.Reader (MonadReader(..), ReaderT(..), asks)
3728import Control.Monad.Logger
29+import Control.Monad.Reader (MonadReader(..), ReaderT(..), asks)
3830import Control.Monad.Supply
39−import Control.Monad.Base (MonadBase(..))
31+import Control.Monad.Trans.Class (MonadTrans(..))
4032import Control.Monad.Trans.Control (MonadBaseControl(..))
33+import Control.Monad.Trans.Except
34+import Control.Monad.Writer.Class (MonadWriter(..))
4135
42−import Control.Concurrent.Lifted as C
43−
36+import Data.Aeson (encode, decode)
37+import Data.Either (partitionEithers)
38+import Data.Foldable (for_)
4439import Data.List (foldl', sort)
4540import Data.Maybe (fromMaybe, catMaybes)
46−import Data.Either (partitionEithers)
47−import Data.Time.Clock
4841import Data.String (fromString)
49−import Data.Foldable (for_)
42+import Data.Time.Clock
5043import Data.Traversable (for)
5144import Data.Version (showVersion)
52−import Data.Aeson (encode, decode)
5345import qualified Data.ByteString.Lazy as B
5446import qualified Data.ByteString.UTF8 as BU8
55−import qualified Data.Set as S
5647import qualified Data.Map as M
48+import qualified Data.Set as S
5749
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
7250import Language.PureScript.AST
73−import Language.PureScript.Externs
51+import Language.PureScript.Crash
7452import Language.PureScript.Environment
7553import Language.PureScript.Errors
54+import Language.PureScript.Externs
7655import Language.PureScript.Linter
7756import Language.PureScript.ModuleDependencies
7857import Language.PureScript.Names
@@ -82,14 +61,25 @@ import Language.PureScript.Pretty.Common(SMap(..))
8261import Language.PureScript.Renamer
8362import Language.PureScript.Sugar
8463import Language.PureScript.TypeChecker
85−import qualified Language.PureScript.Constants as C
64+import qualified Language.JavaScript.Parser as JS
8665import qualified Language.PureScript.Bundle as Bundle
87−import qualified Language.PureScript.Parser as PSParser
88−
8966import qualified Language.PureScript.CodeGen.JS as J
67+import qualified Language.PureScript.Constants as C
9068import qualified Language.PureScript.CoreFn as CF
69+import qualified Language.PureScript.Parser as PSParser
70+
9171import qualified Paths_purescript as Paths
9272
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+
9383-- | Progress messages from the make process
9484data ProgressMessage
9585 = CompilingModule ModuleName
src/Language/PureScript/ModuleDependencies.hs+8−8
@@ -1,12 +1,12 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−
31-- |
42-- Provides the ability to sort modules based on module dependencies
53--
6−module Language.PureScript.ModuleDependencies (
7− sortModules,
8− ModuleGraph
9−) where
4+module Language.PureScript.ModuleDependencies
5+ ( sortModules
6+ , ModuleGraph
7+ ) where
8+
9+import Prelude.Compat
1010
1111import Control.Monad.Error.Class (MonadError(..))
1212
@@ -14,11 +14,11 @@ import Data.Graph
1414import Data.List (nub)
1515import Data.Maybe (fromMaybe)
1616
17−import Language.PureScript.Crash
1817import Language.PureScript.AST
18+import Language.PureScript.Crash
19+import Language.PureScript.Errors
1920import Language.PureScript.Names
2021import Language.PureScript.Types
21−import Language.PureScript.Errors
2222
2323-- | A list of modules with their transitive dependencies
2424type ModuleGraph = [(ModuleName, [ModuleName])]
src/Language/PureScript/Names.hs+3−4
@@ -1,19 +1,18 @@
1−{-# LANGUAGE DeriveFunctor #-}
21{-# LANGUAGE TemplateHaskell #-}
3−{-# LANGUAGE EmptyDataDecls #-}
4−{-# LANGUAGE KindSignatures #-}
52
63-- |
74-- Data types for names
85--
96module Language.PureScript.Names where
107
8+import Prelude.Compat
9+
1110import Control.Monad (liftM)
1211import Control.Monad.Supply.Class
1312
14−import Data.List
1513import Data.Aeson
1614import Data.Aeson.TH
15+import Data.List
1716
1817-- |
1918-- 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−--
111-- |
122-- The data type of compiler options
133--
14−-----------------------------------------------------------------------------
15−
164module Language.PureScript.Options where
175
6+import Prelude.Compat
7+
188-- |
199-- The data type of compiler options
2010--
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−-- |
12−-- A collection of parsers for core data types:
13−--
14−-- [@Language.PureScript.Parser.Kinds@] Parser for kinds
15−--
16−-- [@Language.PureScript.Parser.Values@] Parser for values
17−--
18−-- [@Language.PureScript.Parser.Types@] Parser for types
19−--
20−-- [@Language.PureScript.Parser.Declaration@] Parsers for declarations and modules
21−--
22−-- [@Language.PureScript.Parser.State@] Parser state, including indentation
23−--
24−-- [@Language.PureScript.Parser.Common@] Common parsing utility functions
25−--
26−-----------------------------------------------------------------------------
27−
28−module Language.PureScript.Parser (module P) where
29−
30−import Language.PureScript.Parser.Common as P
31−import Language.PureScript.Parser.Types 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
1+-- |
2+-- A collection of parsers for core data types:
3+--
4+-- [@Language.PureScript.Parser.Kinds@] Parser for kinds
5+--
6+-- [@Language.PureScript.Parser.Values@] Parser for values
7+--
8+-- [@Language.PureScript.Parser.Types@] Parser for types
9+--
10+-- [@Language.PureScript.Parser.Declaration@] Parsers for declarations and modules
11+--
12+-- [@Language.PureScript.Parser.State@] Parser state, including indentation
13+--
14+-- [@Language.PureScript.Parser.Common@] Common parsing utility functions
15+--
16+module Language.PureScript.Parser (module P) where
17+
18+import Language.PureScript.Parser.Common as P
19+import Language.PureScript.Parser.Declarations 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−
31-- |
4−-- Constants, and utility functions to be used when parsing
2+-- Constants and utility functions to be used when parsing
53--
64module Language.PureScript.Parser.Common where
75
6+import Prelude.Compat
7+
88import Control.Applicative
99import Control.Monad (guard)
1010
11+import Language.PureScript.AST.SourcePos
1112import Language.PureScript.Comments
13+import Language.PureScript.Names
1214import Language.PureScript.Parser.Lexer
1315import Language.PureScript.Parser.State
14−import Language.PureScript.Names
15−
16−import Language.PureScript.AST.SourcePos
1716
1817import qualified Text.Parsec as P
1918
src/Language/PureScript/Parser/Declarations.hs+13−17
@@ -1,22 +1,18 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−{-# LANGUAGE TupleSections #-}
4−
51-- |
62-- Parsers for module definitions and declarations
73--
8−module Language.PureScript.Parser.Declarations (
9− parseDeclaration,
10− parseModule,
11− parseModules,
12− parseModulesFromFiles,
13− parseValue,
14− parseGuard,
15− parseBinder,
16− parseBinderNoParens,
17− parseImportDeclaration',
18− parseLocalDeclaration
19−) where
4+module Language.PureScript.Parser.Declarations
5+ ( parseDeclaration
6+ , parseModule
7+ , parseModules
8+ , parseModulesFromFiles
9+ , parseValue
10+ , parseGuard
11+ , parseBinder
12+ , parseBinderNoParens
13+ , parseImportDeclaration'
14+ , parseLocalDeclaration
15+ ) where
2016
2117import Prelude hiding (lex)
2218
@@ -541,7 +537,7 @@ parseBinderAtom = P.choice
541537 , parseArrayBinder
542538 , ParensInBinder <$> parens parseBinder
543539 ] P.<?> "binder"
544−
540+
545541-- |
546542-- Parse a binder as it would appear in a top level declaration
547543--
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−
171module Language.PureScript.Parser.JS
182 ( ForeignJS()
193 , parseForeignModulesFromFiles
204 ) where
215
22−import Prelude ()
236import Prelude.Compat hiding (lex)
247
258import Control.Monad (forM_, when, msum)
269import Control.Monad.Error.Class (MonadError(..))
2710import Control.Monad.Writer.Class (MonadWriter(..))
11+
2812import Data.Function (on)
2913import Data.List (sortBy, groupBy)
14+import qualified Data.Map as M
15+
3016import Language.PureScript.Errors
3117import Language.PureScript.Names
3218import Language.PureScript.Parser.Common
3319import Language.PureScript.Parser.Lexer
34−import qualified Data.Map as M
20+
3521import qualified Text.Parsec as PS
3622
3723type 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−--
111-- |
122-- A parser for kinds
133--
14−-----------------------------------------------------------------------------
4+module Language.PureScript.Parser.Kinds (parseKind) where
155
16−module Language.PureScript.Parser.Kinds (
17− parseKind
18−) where
19−
20−import Prelude ()
216import Prelude.Compat
227
238import Language.PureScript.Kinds
249import Language.PureScript.Parser.Common
2510import Language.PureScript.Parser.Lexer
11+
2612import qualified Text.Parsec as P
2713import qualified Text.Parsec.Expr as P
2814
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−--
111-- |
122-- The first step in the parsing process - turns source code into a list of lexemes
133--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE TupleSections #-}
17−
184module Language.PureScript.Parser.Lexer
195 ( PositionedToken(..)
206 , Token()
@@ -75,15 +61,14 @@ module Language.PureScript.Parser.Lexer
7561
7662import Prelude hiding (lex)
7763
78−import Data.Char (isSpace, isAscii, isSymbol, isAlphaNum)
79−
64+import Control.Applicative
8065import Control.Monad (void, guard)
81−import Data.Functor.Identity
8266
83−import Control.Applicative
67+import Data.Char (isSpace, isAscii, isSymbol, isAlphaNum)
68+import Data.Functor.Identity
8469
85−import Language.PureScript.Parser.State
8670import Language.PureScript.Comments
71+import Language.PureScript.Parser.State
8772
8873import qualified Text.Parsec as P
8974import 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−--
111-- |
122-- State for the parser monad
133--
14−-----------------------------------------------------------------------------
15−
164module Language.PureScript.Parser.State where
175
6+import Prelude.Compat
7+
188import qualified Text.Parsec as P
199
2010-- |
src/Language/PureScript/Parser/Types.hs+11−10
@@ -1,21 +1,22 @@
1−module Language.PureScript.Parser.Types (
2− parseType,
3− parsePolyType,
4− noWildcards,
5− parseTypeAtom
6−) where
1+module Language.PureScript.Parser.Types
2+ ( parseType
3+ , parsePolyType
4+ , noWildcards
5+ , parseTypeAtom
6+ ) where
7+
8+import Prelude.Compat
79
810import Control.Applicative
911import Control.Monad (when, unless)
1012
13+import Language.PureScript.AST.SourcePos
14+import Language.PureScript.Environment
1115import Language.PureScript.Names
12−import Language.PureScript.Types
1316import Language.PureScript.Parser.Common
1417import Language.PureScript.Parser.Kinds
1518import Language.PureScript.Parser.Lexer
16−import Language.PureScript.Environment
17−
18−import Language.PureScript.AST.SourcePos
19+import Language.PureScript.Types
1920
2021import qualified Text.Parsec as P
2122import 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−--
111-- |
122-- A collection of pretty printers for core data types:
133--
@@ -19,11 +9,9 @@
199--
2010-- [@Language.PureScript.Pretty.JS@] Pretty printer for values, used for code generation
2111--
22−-----------------------------------------------------------------------------
23−
2412module Language.PureScript.Pretty (module P) where
2513
14+import Language.PureScript.Pretty.JS as P
2615import Language.PureScript.Pretty.Kinds as P
27−import Language.PureScript.Pretty.Values as P
2816import 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−-----------------------------------------------------------------------------
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−--
1+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
2+
113-- |
124-- Common pretty-printing utility functions
135--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE GeneralizedNewtypeDeriving #-}
17−
186module Language.PureScript.Pretty.Common where
197
20−import Prelude ()
218import Prelude.Compat
229
2310import Control.Monad.State (StateT, modify, get)
11+
2412import Data.List (elemIndices, intersperse)
2513
26−import Language.PureScript.Parser.Lexer (reservedPsNames, isUnquotedKey)
2714import Language.PureScript.AST (SourcePos(..), SourceSpan(..))
15+import Language.PureScript.Parser.Lexer (reservedPsNames, isUnquotedKey)
2816
2917import Text.PrettyPrint.Boxes
3018
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−--
111-- |
122-- Pretty printer for the Javascript AST
133--
14−-----------------------------------------------------------------------------
4+module Language.PureScript.Pretty.JS
5+ ( prettyPrintJS
6+ , prettyPrintJSWithSourceMaps
7+ ) where
158
16−module Language.PureScript.Pretty.JS (
17− prettyPrintJS, prettyPrintJSWithSourceMaps
18−) where
19−
20−import Prelude ()
219import Prelude.Compat
2210
23−import Data.Maybe (fromMaybe)
24−
2511import Control.Arrow ((<+>))
2612import Control.Monad.State hiding (sequence)
2713import Control.PatternArrows
2814import qualified Control.Arrow as A
2915
30−import Language.PureScript.Crash
16+import Data.Maybe (fromMaybe)
17+import Data.Monoid
18+
19+import Language.PureScript.AST (SourceSpan(..))
3120import Language.PureScript.CodeGen.JS.AST
3221import Language.PureScript.CodeGen.JS.Common
33−import Language.PureScript.Pretty.Common
3422import Language.PureScript.Comments
35−
36−
37−import Language.PureScript.AST (SourceSpan(..))
23+import Language.PureScript.Crash
24+import Language.PureScript.Pretty.Common
3825
3926import Numeric
4027
41−import Data.Monoid
42−
4328literals :: (Emit gen) => Pattern PrinterState JS gen
4429literals = mkPattern' match'
4530 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−--
111-- |
122-- Pretty printer for kinds
133--
14−-----------------------------------------------------------------------------
4+module Language.PureScript.Pretty.Kinds
5+ ( prettyPrintKind
6+ ) where
157
16−module Language.PureScript.Pretty.Kinds (
17− prettyPrintKind
18−) where
19−
20−import Data.Maybe (fromMaybe)
8+import Prelude.Compat
219
2210import Control.Arrow (ArrowPlus(..))
23−import Control.PatternArrows
11+import Control.PatternArrows as PA
12+
13+import Data.Maybe (fromMaybe)
2414
2515import Language.PureScript.Crash
2616import Language.PureScript.Kinds
@@ -48,7 +38,9 @@ funKind = mkPattern match
4838
4939-- | Generate a pretty-printed string representing a Kind
5040prettyPrintKind :: Kind -> String
51−prettyPrintKind = fromMaybe (internalError "Incomplete pattern") . pattern matchKind ()
41+prettyPrintKind
42+ = fromMaybe (internalError "Incomplete pattern")
43+ . PA.pattern matchKind ()
5244 where
5345 matchKind :: Pattern () Kind String
5446 matchKind = buildPrettyPrinter operators (typeLiterals <+> fmap parens matchKind)
src/Language/PureScript/Pretty/Types.hs+15−7
@@ -10,18 +10,20 @@ module Language.PureScript.Pretty.Types
1010 , prettyPrintRow
1111 ) where
1212
13−import Data.Maybe (fromMaybe)
13+import Prelude.Compat
1414
1515import Control.Arrow ((<+>))
16−import Control.PatternArrows
16+import Control.PatternArrows as PA
17+
18+import Data.Maybe (fromMaybe)
1719
1820import Language.PureScript.Crash
19−import Language.PureScript.Types
20−import Language.PureScript.Names
21+import Language.PureScript.Environment
2122import Language.PureScript.Kinds
23+import Language.PureScript.Names
2224import Language.PureScript.Pretty.Common
2325import Language.PureScript.Pretty.Kinds
24−import Language.PureScript.Environment
26+import Language.PureScript.Types
2527
2628import Text.PrettyPrint.Boxes hiding ((<+>))
2729
@@ -147,14 +149,20 @@ forall_ = mkPattern match
147149 match _ = Nothing
148150
149151typeAtomAsBox :: Type -> Box
150−typeAtomAsBox = fromMaybe (internalError "Incomplete pattern") . pattern matchTypeAtom () . insertPlaceholders
152+typeAtomAsBox
153+ = fromMaybe (internalError "Incomplete pattern")
154+ . PA.pattern matchTypeAtom ()
155+ . insertPlaceholders
151156
152157-- | Generate a pretty-printed string representing a Type, as it should appear inside parentheses
153158prettyPrintTypeAtom :: Type -> String
154159prettyPrintTypeAtom = render . typeAtomAsBox
155160
156161typeAsBox :: Type -> Box
157−typeAsBox = fromMaybe (internalError "Incomplete pattern") . pattern matchType () . insertPlaceholders
162+typeAsBox
163+ = fromMaybe (internalError "Incomplete pattern")
164+ . PA.pattern matchType ()
165+ . insertPlaceholders
158166
159167-- | Generate a pretty-printed string representing a Type
160168prettyPrintType :: Type -> String
src/Language/PureScript/Pretty/Values.hs+8−6
@@ -1,16 +1,18 @@
11-- |
22-- Pretty printer for values
33--
4−module Language.PureScript.Pretty.Values (
5− prettyPrintValue,
6− prettyPrintBinder,
7− prettyPrintBinderAtom
8−) where
4+module Language.PureScript.Pretty.Values
5+ ( prettyPrintValue
6+ , prettyPrintBinder
7+ , prettyPrintBinderAtom
8+ ) where
9+
10+import Prelude.Compat
911
1012import Control.Arrow (second)
1113
12−import Language.PureScript.Crash
1314import Language.PureScript.AST
15+import Language.PureScript.Crash
1416import Language.PureScript.Names
1517import Language.PureScript.Pretty.Common
1618import 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 #-}
41{-# LANGUAGE GeneralizedNewtypeDeriving #-}
2+{-# LANGUAGE OverloadedStrings #-}
53
64module Language.PureScript.Publish
75 ( preparePackage
@@ -23,47 +21,46 @@ module Language.PureScript.Publish
2321 , getResolvedDependencies
2422 ) where
2523
26−import Prelude ()
2724import Prelude.Compat hiding (userError)
2825
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
3035import Data.Char (isSpace)
36+import Data.Foldable (traverse_)
37+import Data.Function (on)
3138import Data.List (stripPrefix, isSuffixOf, (\\), nubBy)
32−import Data.List.Split (splitOn)
3339import Data.List.NonEmpty (NonEmpty(..))
40+import Data.List.Split (splitOn)
41+import Data.Maybe
3442import Data.Version
35−import Data.Function (on)
36−import Data.Foldable (traverse_)
37−import Safe (headMay)
38−import Data.Aeson.BetterErrors
43+import qualified Data.SPDX as SPDX
3944import qualified Data.Text as T
4045import qualified Data.Text.Lazy as TL
4146import qualified Data.Text.Lazy.Encoding as TL
42−import qualified Data.SPDX as SPDX
4347
44−import Control.Category ((>>>))
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
48+import Safe (headMay)
5149
5250import System.Directory (doesFileExist, findExecutable)
53−import System.Process (readProcess)
5451import System.Exit (exitFailure)
5552import System.FilePath (pathSeparator)
53+import System.Process (readProcess)
5654import qualified System.FilePath.Glob as Glob
5755import qualified System.Info
5856
59−import Web.Bower.PackageMeta (PackageMeta(..), BowerError(..), PackageName,
60− runPackageName, parsePackageName, Repository(..))
57+import Web.Bower.PackageMeta (PackageMeta(..), BowerError(..), PackageName, runPackageName, parsePackageName, Repository(..))
6158import qualified Web.Bower.PackageMeta as Bower
6259
60+import Language.PureScript.Publish.ErrorsWarnings
61+import Language.PureScript.Publish.Utils
6362import qualified Language.PureScript as P (version)
6463import qualified Language.PureScript.Docs as D
65−import Language.PureScript.Publish.Utils
66−import Language.PureScript.Publish.ErrorsWarnings
6764
6865data PublishOptions = PublishOptions
6966 { -- | 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
44 , module Language.PureScript.Publish.BoxesHelpers
55 ) where
66
7+import Prelude.Compat
8+
79import System.IO (hPutStr, stderr)
10+
811import qualified Text.PrettyPrint.Boxes as Boxes
912
1013width :: Int
src/Language/PureScript/Publish/ErrorsWarnings.hs+8−11
@@ -1,5 +1,4 @@
11{-# LANGUAGE OverloadedStrings #-}
2−{-# LANGUAGE RecordWildCards #-}
32
43module Language.PureScript.Publish.ErrorsWarnings
54 ( PackageError(..)
@@ -16,26 +15,24 @@ module Language.PureScript.Publish.ErrorsWarnings
1615 , renderWarnings
1716 ) where
1817
19−import Prelude ()
2018import Prelude.Compat
2119
20+import Control.Exception (IOException)
21+
2222import Data.Aeson.BetterErrors
23−import Data.Version
24−import Data.Maybe
25−import Data.Monoid
2623import Data.List (intersperse, intercalate)
2724import Data.List.NonEmpty (NonEmpty(..))
25+import Data.Maybe
26+import Data.Monoid
27+import Data.Version
2828import qualified Data.List.NonEmpty as NonEmpty
29−
3029import qualified Data.Text as T
3130
32−import Control.Exception (IOException)
33−import Web.Bower.PackageMeta (BowerError, PackageName, runPackageName, showBowerError)
34−import qualified Web.Bower.PackageMeta as Bower
35−
31+import Language.PureScript.Publish.BoxesHelpers
3632import qualified Language.PureScript as P
3733
38−import Language.PureScript.Publish.BoxesHelpers
34+import Web.Bower.PackageMeta (BowerError, PackageName, runPackageName, showBowerError)
35+import qualified Web.Bower.PackageMeta as Bower
3936
4037-- | An error which meant that it was not possible to retrieve metadata for a
4138-- package.
src/Language/PureScript/Publish/Utils.hs+41−38
@@ -1,38 +1,41 @@
1−
2−module Language.PureScript.Publish.Utils where
3−
4−import Data.List
5−import Data.Either (partitionEithers)
6−import System.Directory
7−import System.Exit (exitFailure)
8−import System.IO (hPutStrLn, stderr)
9−import System.FilePath (pathSeparator)
10−import qualified System.FilePath.Glob as Glob
11−
12−-- | Glob relative to the current directory, and produce relative pathnames.
13−globRelative :: Glob.Pattern -> IO [FilePath]
14−globRelative pat = do
15− currentDir <- getCurrentDirectory
16− filesAbsolute <- Glob.globDir1 pat currentDir
17− let prefix = currentDir ++ [pathSeparator]
18− let (fails, paths) = partitionEithers . map (stripPrefix' prefix) $ filesAbsolute
19− if null fails
20− then return paths
21− else do
22− let p = hPutStrLn stderr
23− p "Internal error in Language.PureScript.Publish.Utils.globRelative"
24− p "Unmatched files:"
25− mapM_ p fails
26− exitFailure
27−
28− where
29− stripPrefix' prefix dir =
30− maybe (Left dir) Right $ stripPrefix prefix dir
31−
32−-- | Glob pattern for PureScript source files.
33−purescriptSourceFiles :: Glob.Pattern
34−purescriptSourceFiles = Glob.compile "src/**/*.purs"
35−
36−-- | Glob pattern for PureScript dependency files.
37−purescriptDepsFiles :: Glob.Pattern
38−purescriptDepsFiles = Glob.compile "bower_components/*/src/**/*.purs"
1+
2+module Language.PureScript.Publish.Utils where
3+
4+import Prelude.Compat
5+
6+import Data.Either (partitionEithers)
7+import Data.List
8+
9+import System.Directory
10+import System.Exit (exitFailure)
11+import System.FilePath (pathSeparator)
12+import System.IO (hPutStrLn, stderr)
13+import qualified System.FilePath.Glob as Glob
14+
15+-- | Glob relative to the current directory, and produce relative pathnames.
16+globRelative :: Glob.Pattern -> IO [FilePath]
17+globRelative pat = do
18+ currentDir <- getCurrentDirectory
19+ filesAbsolute <- Glob.globDir1 pat currentDir
20+ let prefix = currentDir ++ [pathSeparator]
21+ let (fails, paths) = partitionEithers . map (stripPrefix' prefix) $ filesAbsolute
22+ if null fails
23+ then return paths
24+ else do
25+ let p = hPutStrLn stderr
26+ p "Internal error in Language.PureScript.Publish.Utils.globRelative"
27+ p "Unmatched files:"
28+ mapM_ p fails
29+ exitFailure
30+
31+ where
32+ stripPrefix' prefix dir =
33+ maybe (Left dir) Right $ stripPrefix prefix dir
34+
35+-- | Glob pattern for PureScript source files.
36+purescriptSourceFiles :: Glob.Pattern
37+purescriptSourceFiles = Glob.compile "src/**/*.purs"
38+
39+-- | Glob pattern for PureScript dependency files.
40+purescriptDepsFiles :: Glob.Pattern
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−
41-- |
52-- Renaming pass that prevents shadowing of local identifiers.
63--
74module Language.PureScript.Renamer (renameInModules) where
85
9−import Prelude ()
106import Prelude.Compat
117
128import Control.Monad.State
139
1410import Data.List (find)
1511import Data.Maybe (fromJust, fromMaybe)
16−
1712import qualified Data.Map as M
1813import qualified Data.Set as S
1914
2015import Language.PureScript.CoreFn
2116import Language.PureScript.Names
2217import Language.PureScript.Traversals
23−
2418import qualified Language.PureScript.Constants as C
2519
2620-- |
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−--
111-- |
122-- Desugaring passes
133--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE FlexibleContexts #-}
17−
184module Language.PureScript.Sugar (desugar, module S) where
195
20−import Prelude ()
216import Prelude.Compat
227
23−import Control.Monad
248import Control.Category ((>>>))
9+import Control.Monad
2510import Control.Monad.Error.Class (MonadError())
26−import Control.Monad.Writer.Class (MonadWriter())
2711import Control.Monad.Supply.Class
12+import Control.Monad.Writer.Class (MonadWriter())
2813
2914import Language.PureScript.AST
3015import Language.PureScript.Errors
3116import Language.PureScript.Externs
32−
3317import Language.PureScript.Sugar.BindingGroups as S
3418import Language.PureScript.Sugar.CaseDeclarations as S
3519import 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−
51-- |
62-- This module implements the desugaring pass which creates binding groups from sets of
73-- mutually-recursive value declarations and mutually-recursive type declarations.
@@ -13,7 +9,6 @@ module Language.PureScript.Sugar.BindingGroups
139 , collapseBindingGroupsModule
1410 ) where
1511
16−import Prelude ()
1712import Prelude.Compat
1813
1914import Control.Monad ((<=<))
src/Language/PureScript/Sugar/CaseDeclarations.hs+7−11
@@ -1,30 +1,26 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−
41-- |
52-- This module implements the desugaring pass which replaces top-level binders with
63-- case expressions.
74--
8−module Language.PureScript.Sugar.CaseDeclarations (
9− desugarCases,
10− desugarCasesModule
11−) where
5+module Language.PureScript.Sugar.CaseDeclarations
6+ ( desugarCases
7+ , desugarCasesModule
8+ ) where
129
13−import Prelude ()
1410import Prelude.Compat
1511
16−import Language.PureScript.Crash
17−import Data.Maybe (catMaybes, mapMaybe)
1812import Data.List (nub, groupBy, foldl1')
13+import Data.Maybe (catMaybes, mapMaybe)
1914
2015import Control.Monad ((<=<), forM, replicateM, join, unless)
2116import Control.Monad.Error.Class (MonadError(..))
2217import Control.Monad.Supply.Class
2318
24−import Language.PureScript.Names
2519import Language.PureScript.AST
20+import Language.PureScript.Crash
2621import Language.PureScript.Environment
2722import Language.PureScript.Errors
23+import Language.PureScript.Names
2824import Language.PureScript.Traversals
2925import Language.PureScript.TypeChecker.Monad (guardWith)
3026
src/Language/PureScript/Sugar/DoNotation.hs+7−13
@@ -1,27 +1,21 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−
41-- |
52-- This module implements the desugaring pass which replaces do-notation statements with
63-- appropriate calls to bind from the Prelude.Monad type class.
74--
8−module Language.PureScript.Sugar.DoNotation (
9− desugarDoModule
10−) where
5+module Language.PureScript.Sugar.DoNotation (desugarDoModule) where
116
12−import Prelude ()
137import Prelude.Compat
148
15−import Language.PureScript.Crash
16−import Language.PureScript.Names
9+import Control.Monad.Error.Class (MonadError(..))
10+import Control.Monad.Supply.Class
11+
12+
1713import Language.PureScript.AST
14+import Language.PureScript.Crash
1815import Language.PureScript.Errors
19−
16+import Language.PureScript.Names
2017import qualified Language.PureScript.Constants as C
2118
22−import Control.Monad.Error.Class (MonadError(..))
23−import Control.Monad.Supply.Class
24−
2519-- |
2620-- Replace all @DoNotationBind@ and @DoNotationValue@ constructors with applications of the Prelude.bind function,
2721-- 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−
61module Language.PureScript.Sugar.Names
72 ( desugarImports
83 , desugarImportsWithEnv
@@ -13,32 +8,30 @@ module Language.PureScript.Sugar.Names
138 , Exports(..)
149 ) where
1510
16−import Prelude ()
1711import Prelude.Compat
1812
19−import Data.List (find, nub)
20−import Data.Maybe (fromMaybe, mapMaybe)
21−
2213import Control.Arrow (first)
2314import Control.Monad
2415import Control.Monad.Error.Class (MonadError(..))
25−import Control.Monad.Writer (MonadWriter(..), censor)
2616import Control.Monad.State.Lazy
17+import Control.Monad.Writer (MonadWriter(..), censor)
2718
19+import Data.List (find, nub)
20+import Data.Maybe (fromMaybe, mapMaybe)
2821import qualified Data.Map as M
2922import qualified Data.Set as S
3023
31−import Language.PureScript.Crash
3224import Language.PureScript.AST
33−import Language.PureScript.Names
34−import Language.PureScript.Types
25+import Language.PureScript.Crash
3526import Language.PureScript.Errors
36−import Language.PureScript.Traversals
3727import Language.PureScript.Externs
28+import Language.PureScript.Linter.Imports
29+import Language.PureScript.Names
3830import Language.PureScript.Sugar.Names.Env
39−import Language.PureScript.Sugar.Names.Imports
4031import 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
4235
4336-- |
4437-- 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−
41module Language.PureScript.Sugar.Names.Env
52 ( ImportRecord(..)
63 , ImportProvenance(..)
@@ -21,21 +18,23 @@ module Language.PureScript.Sugar.Names.Env
2118 , checkImportConflicts
2219 ) where
2320
21+import Prelude.Compat
22+
23+import Control.Monad
24+import Control.Monad.Error.Class (MonadError(..))
25+import Control.Monad.Writer.Class (MonadWriter(..))
26+
2427import Data.Function (on)
2528import Data.List (groupBy, sortBy, nub, delete)
2629import Data.Maybe (fromJust)
2730import qualified Data.Map as M
2831import qualified Data.Set as S
2932
30−import Control.Monad
31−import Control.Monad.Error.Class (MonadError(..))
32−import Control.Monad.Writer.Class (MonadWriter(..))
33−
3433import Language.PureScript.AST
3534import Language.PureScript.Crash
36−import Language.PureScript.Names
3735import Language.PureScript.Environment
3836import Language.PureScript.Errors
37+import Language.PureScript.Names
3938
4039-- |
4140-- 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−
71module Language.PureScript.Sugar.Names.Exports
82 ( findExportable
93 , resolveExports
104 ) where
115
12−import Prelude ()
136import Prelude.Compat
147
15−import Data.List (find, intersect)
16−import Data.Maybe (fromMaybe, mapMaybe)
17−import Data.Foldable (traverse_)
18−
198import Control.Monad
209import Control.Monad.Writer.Class (MonadWriter(..))
2110import Control.Monad.Error.Class (MonadError(..))
2211
12+import Data.Foldable (traverse_)
13+import Data.List (find, intersect)
14+import Data.Maybe (fromMaybe, mapMaybe)
2315import qualified Data.Map as M
2416
25−import Language.PureScript.Crash
2617import Language.PureScript.AST
27−import Language.PureScript.Names
18+import Language.PureScript.Crash
2819import Language.PureScript.Errors
20+import Language.PureScript.Names
2921import Language.PureScript.Sugar.Names.Env
3022
3123-- |
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−
61module Language.PureScript.Sugar.Names.Imports
72 ( resolveImports
83 , resolveModuleImport
94 , findImports
105 ) where
116
12−import Prelude ()
137import Prelude.Compat
148
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−
219import Control.Arrow (first)
2210import Control.Monad
2311import Control.Monad.Error.Class (MonadError(..))
2412import Control.Monad.Writer (MonadWriter(..))
2513
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)
2619import qualified Data.Map as M
2720import qualified Data.Set as S
2821
29−import Language.PureScript.Crash
3022import Language.PureScript.AST
31−import Language.PureScript.Names
23+import Language.PureScript.Crash
3224import Language.PureScript.Errors
25+import Language.PureScript.Names
3326import Language.PureScript.Sugar.Names.Env
3427
3528-- |
src/Language/PureScript/Sugar/ObjectWildcards.hs+3−8
@@ -1,12 +1,7 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE PatternGuards #-}
3−{-# LANGUAGE ScopedTypeVariables #-}
1+module Language.PureScript.Sugar.ObjectWildcards
2+ ( desugarObjectConstructors
3+ ) where
44
5−module Language.PureScript.Sugar.ObjectWildcards (
6− desugarObjectConstructors
7−) where
8−
9−import Prelude ()
105import Prelude.Compat
116
127import 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−
61-- |
72-- This module implements the desugaring pass which reapplies binary operators based
83-- on their fixity data and removes explicit parentheses.
@@ -15,7 +10,6 @@ module Language.PureScript.Sugar.Operators
1510 , removeSignedLiterals
1611 ) where
1712
18−import Prelude ()
1913import Prelude.Compat
2014
2115import Language.PureScript.AST
src/Language/PureScript/Sugar/Operators/Binders.hs−1
@@ -1,6 +1,5 @@
11module Language.PureScript.Sugar.Operators.Binders where
22
3−import Prelude ()
43import Prelude.Compat
54
65import 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−
51module Language.PureScript.Sugar.Operators.Common where
62
7−import Prelude ()
83import Prelude.Compat
94
105import Control.Monad.State
src/Language/PureScript/Sugar/Operators/Expr.hs−4
@@ -1,9 +1,5 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE ScopedTypeVariables #-}
3−
41module Language.PureScript.Sugar.Operators.Expr where
52
6−import Prelude ()
73import Prelude.Compat
84
95import Data.Functor.Identity
src/Language/PureScript/Sugar/Operators/Types.hs−1
@@ -1,6 +1,5 @@
11module Language.PureScript.Sugar.Operators.Types where
22
3−import Prelude ()
43import Prelude.Compat
54
65import Language.PureScript.AST
src/Language/PureScript/Sugar/TypeClasses.hs−5
@@ -1,7 +1,3 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE RecordWildCards #-}
3−{-# LANGUAGE ScopedTypeVariables #-}
4−
51-- |
62-- This module implements the desugaring pass which creates type synonyms for type class dictionaries
73-- and dictionary expressions for type class instances.
@@ -12,7 +8,6 @@ module Language.PureScript.Sugar.TypeClasses
128 , superClassDictionaryNames
139 ) where
1410
15−import Prelude ()
1611import Prelude.Compat
1712
1813import Language.PureScript.Crash
src/Language/PureScript/Sugar/TypeClasses/Deriving.hs+6−12
@@ -1,29 +1,23 @@
1−{-# LANGUAGE FlexibleContexts #-}
2−{-# LANGUAGE MultiParamTypeClasses #-}
31{-# LANGUAGE OverloadedStrings #-}
4−{-# LANGUAGE PatternGuards #-}
5−{-# LANGUAGE RankNTypes #-}
6−{-# LANGUAGE ScopedTypeVariables #-}
72
83-- |
94-- This module implements the generic deriving elaboration that takes place during desugaring.
105--
116module Language.PureScript.Sugar.TypeClasses.Deriving (deriveInstances) where
127
13−import Prelude ()
148import Prelude.Compat
159
16−import Data.List (foldl', find, sortBy)
17−import Data.Maybe (fromMaybe)
18−import Data.Ord (comparing)
19−
2010import Control.Arrow (second)
2111import Control.Monad (replicateM)
22−import Control.Monad.Supply.Class (MonadSupply)
2312import 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)
2418
25−import Language.PureScript.Crash
2619import Language.PureScript.AST
20+import Language.PureScript.Crash
2721import Language.PureScript.Environment
2822import Language.PureScript.Errors
2923import 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−--
111-- |
12−-- This module implements the desugaring pass which replaces top-level type declarations with
13−-- type annotations on the corresponding expression.
2+-- This module implements the desugaring pass which replaces top-level type
3+-- declarations with type annotations on the corresponding expression.
144--
15−-----------------------------------------------------------------------------
16−
17−{-# LANGUAGE FlexibleContexts #-}
18−{-# LANGUAGE ScopedTypeVariables #-}
19−
20−module Language.PureScript.Sugar.TypeDeclarations (
21− desugarTypeDeclarationsModule
22−) where
5+module Language.PureScript.Sugar.TypeDeclarations
6+ ( desugarTypeDeclarationsModule
7+ ) where
238
24−import Prelude ()
259import Prelude.Compat
2610
2711import 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
12−--
13−-----------------------------------------------------------------------------
14−
15−module Language.PureScript.Traversals where
16−
17−import Prelude ()
18−import Prelude.Compat
19−
20−fstM :: (Functor f) => (a -> f c) -> (a, b) -> f (c, b)
21−fstM f (a, b) = flip (,) b <$> f a
22−
23−sndM :: (Functor f) => (b -> f c) -> (a, b) -> f (a, c)
24−sndM f (a, b) = (,) a <$> f b
25−
26−thirdM :: (Functor f) => (c -> f d) -> (a, b, c) -> f (a, b, d)
27−thirdM f (a, b, c) = (,,) a b <$> f c
28−
29−pairM :: (Applicative f) => (a -> f c) -> (b -> f d) -> (a, b) -> f (c, d)
30−pairM f g (a, b) = (,) <$> f a <*> g b
31−
32−maybeM :: (Applicative f) => (a -> f b) -> Maybe a -> f (Maybe b)
33−maybeM _ Nothing = pure Nothing
34−maybeM f (Just a) = Just <$> f a
35−
36−eitherM :: (Applicative f) => (a -> f c) -> (b -> f d) -> Either a b -> f (Either c d)
37−eitherM f _ (Left a) = Left <$> f a
38−eitherM _ g (Right b) = Right <$> g b
39−
40−defS :: (Monad m) => st -> val -> m (st, val)
41−defS s val = return (s, val)
42−
1+-- | Common functions for implementing generic traversals
2+module Language.PureScript.Traversals where
3+
4+import Prelude.Compat
5+
6+fstM :: (Functor f) => (a -> f c) -> (a, b) -> f (c, b)
7+fstM f (a, b) = flip (,) b <$> f a
8+
9+sndM :: (Functor f) => (b -> f c) -> (a, b) -> f (a, c)
10+sndM f (a, b) = (,) a <$> f b
11+
12+thirdM :: (Functor f) => (c -> f d) -> (a, b, c) -> f (a, b, d)
13+thirdM f (a, b, c) = (,,) a b <$> f c
14+
15+pairM :: (Applicative f) => (a -> f c) -> (b -> f d) -> (a, b) -> f (c, d)
16+pairM f g (a, b) = (,) <$> f a <*> g b
17+
18+maybeM :: (Applicative f) => (a -> f b) -> Maybe a -> f (Maybe b)
19+maybeM _ Nothing = pure Nothing
20+maybeM f (Just a) = Just <$> f a
21+
22+eitherM :: (Applicative f) => (a -> f c) -> (b -> f d) -> Either a b -> f (Either c d)
23+eitherM f _ (Left a) = Left <$> f a
24+eitherM _ g (Right b) = Right <$> g b
25+
26+defS :: (Monad m) => st -> val -> m (st, val)
27+defS s val = return (s, val)
src/Language/PureScript/TypeChecker.hs+15−21
@@ -1,36 +1,26 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
21{-# LANGUAGE FlexibleInstances #-}
3−{-# LANGUAGE FlexibleContexts #-}
4−{-# LANGUAGE PatternGuards #-}
52
63-- |
74-- The top-level type checker, which checks all declarations in a module.
85--
9−module Language.PureScript.TypeChecker (
10− module T,
11− typeCheckModule
12−) where
6+module Language.PureScript.TypeChecker
7+ ( module T
8+ , typeCheckModule
9+ ) where
1310
14−import Prelude ()
1511import Prelude.Compat
1612
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−
2813import Control.Monad (when, unless, void, forM, forM_)
29−import Control.Monad.Supply.Class (MonadSupply)
30−import Control.Monad.State.Class (MonadState(..), modify)
3114import Control.Monad.Error.Class (MonadError(..))
15+import Control.Monad.State.Class (MonadState(..), modify)
16+import Control.Monad.Supply.Class (MonadSupply)
3217import Control.Monad.Writer.Class (MonadWriter(..))
3318
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+
3424import Language.PureScript.AST
3525import Language.PureScript.Crash
3626import Language.PureScript.Environment
@@ -39,6 +29,10 @@ import Language.PureScript.Kinds
3929import Language.PureScript.Linter
4030import Language.PureScript.Names
4131import 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
4236import Language.PureScript.TypeClassDictionaries
4337import Language.PureScript.Types
4438
src/Language/PureScript/TypeChecker/Entailment.hs+10−11
@@ -1,26 +1,25 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
2−{-# LANGUAGE FlexibleContexts #-}
3−
41-- |
52-- Type class entailment
63--
7−module Language.PureScript.TypeChecker.Entailment (Context, replaceTypeClassDictionaries) where
4+module Language.PureScript.TypeChecker.Entailment
5+ ( Context
6+ , replaceTypeClassDictionaries
7+ ) where
88
9−import Prelude ()
109import Prelude.Compat
1110
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+
1216import Data.Function (on)
1317import Data.List (minimumBy, sortBy, groupBy)
1418import Data.Maybe (maybeToList, mapMaybe)
1519import qualified Data.Map as M
1620
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
2321import Language.PureScript.AST
22+import Language.PureScript.Crash
2423import Language.PureScript.Errors
2524import Language.PureScript.Names
2625import Language.PureScript.TypeChecker.Unify
src/Language/PureScript/TypeChecker/Kinds.hs+3−9
@@ -1,9 +1,4 @@
1−{-# LANGUAGE MultiParamTypeClasses #-}
21{-# LANGUAGE FlexibleInstances #-}
3−{-# LANGUAGE FlexibleContexts #-}
4−{-# LANGUAGE TupleSections #-}
5−{-# LANGUAGE ScopedTypeVariables #-}
6−{-# LANGUAGE RankNTypes #-}
72
83-- |
94-- This module implements the kind checker
@@ -15,16 +10,15 @@ module Language.PureScript.TypeChecker.Kinds
1510 , kindsOfAll
1611 ) where
1712
18−import Prelude ()
1913import Prelude.Compat
2014
21−import qualified Data.Map as M
22−
2315import Control.Arrow (second)
2416import Control.Monad
2517import Control.Monad.Error.Class (MonadError(..))
26−import Control.Monad.Writer.Class (MonadWriter(..))
2718import Control.Monad.State
19+import Control.Monad.Writer.Class (MonadWriter(..))
20+
21+import qualified Data.Map as M
2822
2923import Language.PureScript.Crash
3024import Language.PureScript.Environment
src/Language/PureScript/TypeChecker/Monad.hs+4−8
@@ -1,7 +1,4 @@
11{-# LANGUAGE FlexibleInstances #-}
2−{-# LANGUAGE RankNTypes #-}
3−{-# LANGUAGE MultiParamTypeClasses #-}
4−{-# LANGUAGE FlexibleContexts #-}
52{-# LANGUAGE GADTs #-}
63
74-- |
@@ -9,17 +6,16 @@
96--
107module Language.PureScript.TypeChecker.Monad where
118
12−import Prelude ()
139import Prelude.Compat
1410
15−import Data.Maybe
16−import qualified Data.Map as M
17−
1811import Control.Arrow (second)
19−import Control.Monad.State
2012import Control.Monad.Error.Class (MonadError(..))
13+import Control.Monad.State
2114import Control.Monad.Writer.Class (MonadWriter(..), listen, censor)
2215
16+import Data.Maybe
17+import qualified Data.Map as M
18+
2319import Language.PureScript.Environment
2420import Language.PureScript.Errors
2521import 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−--
111-- |
122-- Functions relating to type checking for rows
133--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE ScopedTypeVariables #-}
17−{-# LANGUAGE FlexibleContexts #-}
18−{-# LANGUAGE CPP #-}
4+module Language.PureScript.TypeChecker.Rows
5+ ( checkDuplicateLabels
6+ ) where
197
20−module Language.PureScript.TypeChecker.Rows (
21− checkDuplicateLabels
22−) where
8+import Prelude.Compat
239
24−import Data.List
25−
26−#if __GLASGOW_HASKELL__ < 710
27−import Control.Applicative
28−#endif
2910import Control.Monad
3011import Control.Monad.Error.Class (MonadError(..))
3112import Control.Monad.State.Class (MonadState(..))
3213
14+import Data.List
15+
3316import Language.PureScript.AST
3417import Language.PureScript.Errors
3518import 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−--
111-- |
122-- Functions relating to skolemization used during typechecking
133--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE FlexibleContexts #-}
17−
18−module Language.PureScript.TypeChecker.Skolems (
19− newSkolemConstant,
20− introduceSkolemScope,
21− newSkolemScope,
22− skolemize,
23− skolemizeTypesInValue,
24− skolemEscapeCheck
25−) where
4+module Language.PureScript.TypeChecker.Skolems
5+ ( newSkolemConstant
6+ , introduceSkolemScope
7+ , newSkolemScope
8+ , skolemize
9+ , skolemizeTypesInValue
10+ , skolemEscapeCheck
11+ ) where
2612
27−import Prelude ()
2813import Prelude.Compat
2914
30−import Data.List (nub, (\\))
31−import Data.Monoid
32−import Data.Functor.Identity (Identity(), runIdentity)
33−
3415import Control.Monad.Error.Class (MonadError(..))
3516import Control.Monad.State.Class (MonadState(..), gets, modify)
3617
37−import Language.PureScript.Crash
18+import Data.Functor.Identity (Identity(), runIdentity)
19+import Data.List (nub, (\\))
20+import Data.Monoid
21+
3822import Language.PureScript.AST
23+import Language.PureScript.Crash
3924import Language.PureScript.Errors
25+import Language.PureScript.Traversals (defS)
4026import Language.PureScript.TypeChecker.Monad
4127import Language.PureScript.Types
42−import Language.PureScript.Traversals (defS)
4328
4429-- |
4530-- 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−--
111-- |
122-- Subsumption checking
133--
14−-----------------------------------------------------------------------------
4+module Language.PureScript.TypeChecker.Subsumption
5+ ( subsumes
6+ ) where
157
16−{-# LANGUAGE FlexibleContexts #-}
17−{-# LANGUAGE CPP #-}
8+import Prelude.Compat
189
19−module Language.PureScript.TypeChecker.Subsumption (
20− subsumes
21−) where
10+import Control.Monad.Error.Class (MonadError(..))
11+import Control.Monad.State.Class (MonadState(..))
2212
2313import Data.List (sortBy)
2414import Data.Ord (comparing)
2515
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
3316import Language.PureScript.AST
17+import Language.PureScript.Crash
3418import Language.PureScript.Environment
3519import Language.PureScript.Errors
3620import Language.PureScript.TypeChecker.Monad
src/Language/PureScript/TypeChecker/Synonyms.hs+8−24
@@ -1,36 +1,20 @@
1−-----------------------------------------------------------------------------
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−--
1+{-# LANGUAGE GADTs #-}
2+
113-- |
124-- Functions for replacing fully applied type synonyms
135--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE FlexibleContexts #-}
17−{-# LANGUAGE MultiParamTypeClasses #-}
18−{-# LANGUAGE PatternGuards #-}
19−{-# LANGUAGE GADTs #-}
6+module Language.PureScript.TypeChecker.Synonyms
7+ ( replaceAllTypeSynonyms
8+ ) where
209
21−module Language.PureScript.TypeChecker.Synonyms (
22− replaceAllTypeSynonyms
23−) where
24−
25−import Prelude ()
2610import Prelude.Compat
2711
28−import Data.Maybe (fromMaybe)
29−import qualified Data.Map as M
30−
3112import Control.Monad.Error.Class (MonadError(..))
3213import Control.Monad.State
3314
15+import Data.Maybe (fromMaybe)
16+import qualified Data.Map as M
17+
3418import Language.PureScript.Environment
3519import Language.PureScript.Errors
3620import 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 #-}
41{-# LANGUAGE OverloadedStrings #-}
5−{-# LANGUAGE TupleSections #-}
62
73-- |
84-- This module implements the type checker
@@ -28,22 +24,21 @@ module Language.PureScript.TypeChecker.Types
2824 Check a function of a given type returns a value of another type when applied to its arguments
2925-}
3026
31−import Prelude ()
3227import Prelude.Compat
3328
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−
3929import Control.Monad
30+import Control.Monad.Error.Class (MonadError(..))
4031import Control.Monad.State.Class (MonadState(..), gets)
4132import Control.Monad.Supply.Class (MonadSupply)
42−import Control.Monad.Error.Class (MonadError(..))
4333import Control.Monad.Writer.Class (MonadWriter(..))
4434
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+
4640import Language.PureScript.AST
41+import Language.PureScript.Crash
4742import Language.PureScript.Environment
4843import Language.PureScript.Errors
4944import Language.PureScript.Kinds
src/Language/PureScript/TypeChecker/Unify.hs+20−37
@@ -1,47 +1,30 @@
1−-----------------------------------------------------------------------------
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−--
1+{-# LANGUAGE FlexibleInstances #-}
2+
113-- |
124-- Functions and instances relating to unification
135--
14−-----------------------------------------------------------------------------
15−
16−{-# LANGUAGE FlexibleInstances #-}
17−{-# LANGUAGE FlexibleContexts #-}
18−{-# LANGUAGE MultiParamTypeClasses #-}
19−{-# LANGUAGE ScopedTypeVariables #-}
20−{-# LANGUAGE CPP #-}
21−
22−module Language.PureScript.TypeChecker.Unify (
23− freshType,
24− solveType,
25− substituteType,
26− unknownsInType,
27− unifyTypes,
28− unifyRows,
29− unifiesWith,
30− replaceVarWithUnknown,
31− replaceTypeWildcards,
32− varIfUnknown
33−) where
6+module Language.PureScript.TypeChecker.Unify
7+ ( freshType
8+ , solveType
9+ , substituteType
10+ , unknownsInType
11+ , unifyTypes
12+ , unifyRows
13+ , unifiesWith
14+ , replaceVarWithUnknown
15+ , replaceTypeWildcards
16+ , varIfUnknown
17+ ) where
18+
19+import Prelude.Compat
3420
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
4121import Control.Monad
4222import Control.Monad.Error.Class (MonadError(..))
43−import Control.Monad.Writer.Class (MonadWriter(..))
4423import 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
4528
4629import Language.PureScript.Crash
4730import Language.PureScript.Errors
src/Language/PureScript/TypeClassDictionaries.hs+2
@@ -1,5 +1,7 @@
11module Language.PureScript.TypeClassDictionaries where
22
3+import Prelude.Compat
4+
35import Language.PureScript.Names
46import Language.PureScript.Types
57
src/Language/PureScript/Types.hs+5−6
@@ -6,19 +6,18 @@
66--
77module Language.PureScript.Types where
88
9−import Prelude ()
109import Prelude.Compat
1110
11+import Control.Monad ((<=<))
12+
1213import Data.List (nub)
1314import Data.Maybe (fromMaybe)
1415import qualified Data.Aeson as A
1516import qualified Data.Aeson.TH as A
1617
17−import Control.Monad ((<=<))
18−
19−import Language.PureScript.Names
20−import Language.PureScript.Kinds
2118import Language.PureScript.AST.SourcePos
19+import Language.PureScript.Kinds
20+import Language.PureScript.Names
2221
2322-- |
2423-- An identifier for the scope of a skolem variable
@@ -41,7 +40,7 @@ data Type
4140 -- |
4241 -- A type wildcard, as would appear in a partial type synonym
4342 --
44− | TypeWildcard (SourceSpan)
43+ | TypeWildcard SourceSpan
4544 -- |
4645 -- A type constructor
4746 --
src/System/IO/UTF8.hs+2−2
@@ -1,6 +1,6 @@
1−module System.IO.UTF8
1+module System.IO.UTF8 where
22
3−where
3+import Prelude.Compat
44
55import System.IO ( IOMode(..)
66 , hGetContents