Skip to content

Commit

Permalink
Travis tweaks (#2178)
Browse files Browse the repository at this point in the history
* Build haddock --fast

* Use Stackage LTS-6.1

* Add build-job for ghc 8.0

* Fix GHC-8.0 warnings
  • Loading branch information
phadej authored and paf31 committed Jun 5, 2016
1 parent 3154b24 commit e716ea5
Show file tree
Hide file tree
Showing 24 changed files with 54 additions and 51 deletions.
6 changes: 6 additions & 0 deletions .travis.yml
Expand Up @@ -21,6 +21,12 @@ matrix:
# env: BUILD_TYPE=normal STACKAGE_NIGHTLY=true
# allow_failures: true

- compiler: cc-linux-ghc8.0-normal
os: linux
dist: trusty
sudo: required
env: BUILD_TYPE=normal STACK_YAML=stack-ghc-8.0.yaml

- compiler: cc-linux-lts-sdist
os: linux
dist: trusty
Expand Down
3 changes: 3 additions & 0 deletions src/Language/PureScript/AST/Declarations.hs
Expand Up @@ -218,7 +218,10 @@ data ValueFixity = ValueFixity Fixity (Qualified (Either Ident (ProperName 'Cons
data TypeFixity = TypeFixity Fixity (Qualified (ProperName 'TypeName)) (OpName 'TypeOpName)
deriving (Eq, Ord, Show, Read)

pattern ValueFixityDeclaration :: Fixity -> Qualified (Either Ident (ProperName 'ConstructorName)) -> OpName 'ValueOpName -> Declaration
pattern ValueFixityDeclaration fixity name op = FixityDeclaration (Left (ValueFixity fixity name op))

pattern TypeFixityDeclaration :: Fixity -> Qualified (ProperName 'TypeName) -> OpName 'TypeOpName -> Declaration
pattern TypeFixityDeclaration fixity name op = FixityDeclaration (Right (TypeFixity fixity name op))

-- | The members of a type class instance declaration
Expand Down
4 changes: 2 additions & 2 deletions src/Language/PureScript/CodeGen/JS/Optimizer.hs
Expand Up @@ -39,12 +39,12 @@ import qualified Language.PureScript.Constants as C
-- |
-- Apply a series of optimizer passes to simplified Javascript code
--
optimize :: (Monad m, MonadReader Options m, MonadSupply m) => JS -> m JS
optimize :: (MonadReader Options m, MonadSupply m) => JS -> m JS
optimize js = do
noOpt <- asks optionsNoOptimizations
if noOpt then return js else optimize' js

optimize' :: (Monad m, MonadReader Options m, MonadSupply m) => JS -> m JS
optimize' :: (MonadReader Options m, MonadSupply m) => JS -> m JS
optimize' js = do
opts <- ask
js' <- untilFixedPoint (inlineFnComposition . tidyUp . applyAll
Expand Down
2 changes: 1 addition & 1 deletion src/Language/PureScript/Docs/ParseAndBookmark.hs
Expand Up @@ -44,7 +44,7 @@ parseAndBookmark inputFiles depsFiles = do
addBookmarks <$> parseFiles (inputFiles' ++ depsFiles')

parseFiles ::
(MonadError P.MultipleErrors m, MonadIO m) =>
(MonadError P.MultipleErrors m) =>
[(FileInfo, FilePath)]
-> m [(FileInfo, P.Module)]
parseFiles =
Expand Down
12 changes: 6 additions & 6 deletions src/Language/PureScript/Ide.hs
Expand Up @@ -94,24 +94,24 @@ handleCommand Cwd =
handleCommand Reset = resetPscIdeState *> pure (TextResult "State has been reset.")
handleCommand Quit = liftIO exitSuccess

findCompletions :: (PscIde m, MonadLogger m) =>
findCompletions :: (PscIde m) =>
[Filter] -> Matcher -> Maybe P.ModuleName -> m Success
findCompletions filters matcher currentModule = do
modules <- getAllModulesWithReexportsAndCache currentModule
pure . CompletionResult . mapMaybe completionFromMatch . getCompletions filters matcher $ modules

findType :: (PscIde m, MonadLogger m) =>
findType :: (PscIde m) =>
DeclIdent -> [Filter] -> Maybe P.ModuleName -> m Success
findType search filters currentModule = do
modules <- getAllModulesWithReexportsAndCache currentModule
pure . CompletionResult . mapMaybe completionFromMatch . getExactMatches search filters $ modules

findPursuitCompletions :: (MonadIO m, MonadLogger m) =>
findPursuitCompletions :: (MonadIO m) =>
PursuitQuery -> m Success
findPursuitCompletions (PursuitQuery q) =
PursuitResult <$> liftIO (searchPursuitForDeclarations q)

findPursuitPackages :: (MonadIO m, MonadLogger m) =>
findPursuitPackages :: (MonadIO m) =>
PursuitQuery -> m Success
findPursuitPackages (PursuitQuery q) =
PursuitResult <$> liftIO (findPackagesForModuleIdent q)
Expand Down Expand Up @@ -141,7 +141,7 @@ listAvailableModules' dirs =
let cleanedModules = filter (`notElem` [".", ".."]) dirs
in map T.pack cleanedModules

caseSplit :: (PscIde m, MonadLogger m, MonadError PscIdeError m) =>
caseSplit :: (PscIde m, MonadError PscIdeError m) =>
Text -> Int -> Int -> CS.WildcardAnnotations -> Text -> m Success
caseSplit l b e csa t = do
patterns <- CS.makePattern l b e csa <$> CS.caseSplit t
Expand All @@ -150,7 +150,7 @@ caseSplit l b e csa t = do
addClause :: Text -> CS.WildcardAnnotations -> Success
addClause t wca = MultilineTextResult (CS.addClause t wca)

importsForFile :: (MonadIO m, MonadLogger m, MonadError PscIdeError m) =>
importsForFile :: (MonadIO m, MonadError PscIdeError m) =>
FilePath -> m Success
importsForFile fp = do
imports <- getImportsForFile fp
Expand Down
6 changes: 2 additions & 4 deletions src/Language/PureScript/Ide/CaseSplit.hs
Expand Up @@ -13,7 +13,6 @@
-----------------------------------------------------------------------------

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PackageImports #-}

module Language.PureScript.Ide.CaseSplit
( WildcardAnnotations()
Expand All @@ -29,7 +28,6 @@ import Prelude.Compat hiding (lex)

import Control.Arrow (second)
import Control.Monad.Error.Class
import "monad-logger" Control.Monad.Logger
import Data.List (find)
import Data.Monoid
import Data.Text (Text)
Expand All @@ -55,7 +53,7 @@ explicitAnnotations = WildcardAnnotations True
noAnnotations :: WildcardAnnotations
noAnnotations = WildcardAnnotations False

caseSplit :: (PscIde m, MonadLogger m, MonadError PscIdeError m) =>
caseSplit :: (PscIde m, MonadError PscIdeError m) =>
Text -> m [Constructor]
caseSplit q = do
type' <- parseType' (T.unpack q)
Expand All @@ -65,7 +63,7 @@ caseSplit q = do
let appliedCtors = map (second (map applyTypeVars)) ctors
pure appliedCtors

findTypeDeclaration :: (PscIde m, MonadLogger m, MonadError PscIdeError m) =>
findTypeDeclaration :: (PscIde m, MonadError PscIdeError m) =>
P.ProperName 'P.TypeName -> m ExternsDeclaration
findTypeDeclaration q = do
efs <- getExternFiles
Expand Down
6 changes: 2 additions & 4 deletions src/Language/PureScript/Ide/Imports.hs
Expand Up @@ -13,7 +13,6 @@
-----------------------------------------------------------------------------

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PackageImports #-}

module Language.PureScript.Ide.Imports
( addImplicitImport
Expand All @@ -34,7 +33,6 @@ import Prelude.Compat
import Control.Applicative ((<|>))
import Control.Monad.Error.Class
import Control.Monad.IO.Class
import "monad-logger" Control.Monad.Logger
import Data.Bifunctor (first, second)
import Data.Function (on)
import qualified Data.List as List
Expand Down Expand Up @@ -182,7 +180,7 @@ addImplicitImport' imports mn =
-- So @addExplicitImport "/File.purs" "bind" "Prelude"@ with an already existing
-- @import Prelude (bind)@ in the file File.purs returns @["import Prelude
-- (bind, unit)"]@
addExplicitImport :: (MonadIO m, MonadError PscIdeError m, MonadLogger m) =>
addExplicitImport :: (MonadIO m, MonadError PscIdeError m) =>
FilePath -> ExternDecl -> P.ModuleName -> m [Text]
addExplicitImport fp decl moduleName = do
(mn, pre, imports, post) <- parseImportsFromFile fp
Expand Down Expand Up @@ -265,7 +263,7 @@ updateAtFirstOrPrepend p t d l =
--
-- * If more than one possible imports are found, reports the possibilities as a
-- list of completions.
addImportForIdentifier :: (PscIde m, MonadError PscIdeError m, MonadLogger m)
addImportForIdentifier :: (PscIde m, MonadError PscIdeError m)
=> FilePath -- ^ The Sourcefile to read from
-> Text -- ^ The identifier to import
-> [Filter] -- ^ Filters to apply before searching for
Expand Down
2 changes: 1 addition & 1 deletion src/Language/PureScript/Ide/State.hs
Expand Up @@ -91,7 +91,7 @@ getAllModulesWithReexportsAndCache (Just mn) = do
_ -> getAllModulesWithReexports

-- | Looks up a single Module inside the loaded Modules
getModule :: (PscIde m, MonadLogger m) => ModuleIdent -> m (Maybe Module)
getModule :: (PscIde m) => ModuleIdent -> m (Maybe Module)
getModule m = getModule' <$> getPscIdeState <*> pure m

-- | Pure version of @getModule@
Expand Down
4 changes: 2 additions & 2 deletions src/Language/PureScript/Linter/Exhaustive.hs
Expand Up @@ -140,7 +140,7 @@ missingCasesSingle env mn (LiteralBinder (ObjectLiteral bs)) (LiteralBinder (Obj
where
fm = fromMaybe e

compBS :: Eq a => b -> a -> Maybe b -> Maybe b -> (a, (b, b))
compBS :: b -> a -> Maybe b -> Maybe b -> (a, (b, b))
compBS e s b b' = (s, compB e b b')

(sortedNames, binders) = unzip $ genericMerge (compBS NullBinder) sbs sbs'
Expand Down Expand Up @@ -274,7 +274,7 @@ checkExhaustive env mn numArgs cas expr = makeResult . first nub $ foldl' step (
--
-- The binder information is provided so that it can be embedded in the constraint,
-- and then included in the error message.
addPartialConstraint :: MonadSupply m => ([[Binder]], Bool) -> Expr -> m Expr
addPartialConstraint :: ([[Binder]], Bool) -> Expr -> m Expr
addPartialConstraint (bss, complete) e = do
tyVar <- ("p" ++) . show <$> fresh
var <- freshName
Expand Down
3 changes: 1 addition & 2 deletions src/Language/PureScript/Linter/Imports.hs
Expand Up @@ -169,8 +169,7 @@ lintImports (Module ss _ mn mdecls (Just mexports)) env usedImps = do
go (q, name) = M.alter (Just . maybe [name] (name :)) q

extractByQual
:: Eq a
=> ModuleName
:: ModuleName
-> M.Map (Qualified a) [ImportRecord a]
-> (a -> Name)
-> [(ModuleName, Qualified Name)]
Expand Down
4 changes: 2 additions & 2 deletions src/Language/PureScript/Make.hs
Expand Up @@ -132,7 +132,7 @@ data RebuildPolicy
| RebuildAlways deriving (Show, Read, Eq, Ord)

-- | Rebuild a single module
rebuildModule :: forall m. (Monad m, MonadBaseControl IO m, MonadReader Options m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
rebuildModule :: forall m. (Monad m, MonadBaseControl IO m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
=> MakeActions m
-> [ExternsFile]
-> Module
Expand All @@ -159,7 +159,7 @@ rebuildModule MakeActions{..} externs m@(Module _ _ moduleName _ _) = do
-- If timestamps have not changed, the externs file can be used to provide the module's types without
-- having to typecheck the module again.
--
make :: forall m. (Monad m, MonadBaseControl IO m, MonadReader Options m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
make :: forall m. (Monad m, MonadBaseControl IO m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
=> MakeActions m
-> [Module]
-> m [ExternsFile]
Expand Down
2 changes: 1 addition & 1 deletion src/Language/PureScript/Parser/Common.hs
Expand Up @@ -72,7 +72,7 @@ augment p q f = flip (maybe id $ flip f) <$> p <*> P.optionMaybe q
-- |
-- Run the first parser, then match the second zero or more times, applying the specified function for each match
--
fold :: P.Stream s m t => P.ParsecT s u m a -> P.ParsecT s u m b -> (a -> b -> a) -> P.ParsecT s u m a
fold :: P.ParsecT s u m a -> P.ParsecT s u m b -> (a -> b -> a) -> P.ParsecT s u m a
fold first more combine = do
a <- first
bs <- P.many more
Expand Down
2 changes: 1 addition & 1 deletion src/Language/PureScript/Pretty/Common.hs
Expand Up @@ -114,7 +114,7 @@ blockIndent = 4
-- |
-- Pretty print with a new indentation level
--
withIndent :: (Emit gen) => StateT PrinterState Maybe gen -> StateT PrinterState Maybe gen
withIndent :: StateT PrinterState Maybe gen -> StateT PrinterState Maybe gen
withIndent action = do
modify $ \st -> st { indent = indent st + blockIndent }
result <- action
Expand Down
2 changes: 1 addition & 1 deletion src/Language/PureScript/Sugar/CaseDeclarations.hs
Expand Up @@ -144,7 +144,7 @@ toTuple (ValueDeclaration _ _ bs result) = (bs, result)
toTuple (PositionedDeclaration _ _ d) = toTuple d
toTuple _ = internalError "Not a value declaration"

makeCaseDeclaration :: forall m. (MonadSupply m, MonadError MultipleErrors m) => Ident -> [([Binder], Either [(Guard, Expr)] Expr)] -> m Declaration
makeCaseDeclaration :: forall m. (MonadSupply m) => Ident -> [([Binder], Either [(Guard, Expr)] Expr)] -> m Declaration
makeCaseDeclaration ident alternatives = do
let namedArgs = map findName . fst <$> alternatives
argNames = foldl1 resolveNames namedArgs
Expand Down
2 changes: 1 addition & 1 deletion src/Language/PureScript/Sugar/Names.hs
Expand Up @@ -292,7 +292,7 @@ renameInModule imports (Module ss coms mn decls exps) =
-- qualified references are replaced with their canoncial qualified names
-- (e.g. M.Map -> Data.Map.Map).
update
:: (Ord a, Show a)
:: (Ord a)
=> M.Map (Qualified a) [ImportRecord a]
-> (a -> Name)
-> Qualified a
Expand Down
2 changes: 1 addition & 1 deletion src/Language/PureScript/Sugar/Names/Env.hs
Expand Up @@ -375,7 +375,7 @@ getExports env mn =
--
checkImportConflicts
:: forall m a
. (Show a, MonadError MultipleErrors m, MonadWriter MultipleErrors m, Ord a)
. (MonadError MultipleErrors m, MonadWriter MultipleErrors m)
=> ModuleName
-> (a -> Name)
-> [ImportRecord a]
Expand Down
3 changes: 1 addition & 2 deletions src/Language/PureScript/Sugar/Names/Exports.hs
Expand Up @@ -117,8 +117,7 @@ resolveExports env ss mn imps exps refs =
-- Extracts a list of values for a module based on a lookup table. If the
-- boolean is true the values are filtered by the qualification
extract
:: (Show a, Ord a)
=> Bool
:: Bool
-> ModuleName
-> (a -> Name)
-> M.Map (Qualified a) [ImportRecord a]
Expand Down
16 changes: 8 additions & 8 deletions src/Language/PureScript/TypeChecker.hs
Expand Up @@ -53,7 +53,7 @@ addDataType moduleName dtype name args dctors ctorKind = do
addDataConstructor moduleName dtype name (map fst args) dctor tys

addDataConstructor
:: (MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
:: (MonadState CheckState m, MonadError MultipleErrors m)
=> ModuleName
-> DataDeclType
-> ProperName 'TypeName
Expand All @@ -71,7 +71,7 @@ addDataConstructor moduleName dtype name args dctor tys = do
putEnv $ env { dataConstructors = M.insert (Qualified (Just moduleName) dctor) (dtype, name, polyType, fields) (dataConstructors env) }

addTypeSynonym
:: (MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
:: (MonadState CheckState m, MonadError MultipleErrors m)
=> ModuleName
-> ProperName 'TypeName
-> [(String, Maybe Kind)]
Expand All @@ -85,7 +85,7 @@ addTypeSynonym moduleName name args ty kind = do
, typeSynonyms = M.insert (Qualified (Just moduleName) name) (args, ty) (typeSynonyms env) }

valueIsNotDefined
:: (MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
:: (MonadState CheckState m, MonadError MultipleErrors m)
=> ModuleName
-> Ident
-> m ()
Expand All @@ -96,7 +96,7 @@ valueIsNotDefined moduleName name = do
Nothing -> return ()

addValue
:: (MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
:: (MonadState CheckState m)
=> ModuleName
-> Ident
-> Type
Expand All @@ -107,7 +107,7 @@ addValue moduleName name ty nameKind = do
putEnv (env { names = M.insert (moduleName, name) (ty, nameKind, Defined) (names env) })

addTypeClass
:: (MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
:: (MonadState CheckState m)
=> ModuleName
-> ProperName 'ClassName
-> [(String, Maybe Kind)]
Expand All @@ -123,7 +123,7 @@ addTypeClass moduleName pn args implies ds =
toPair _ = internalError "Invalid declaration in TypeClassDeclaration"

addTypeClassDictionaries
:: (MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
:: (MonadState CheckState m)
=> Maybe ModuleName
-> M.Map (Qualified (ProperName 'ClassName)) (M.Map (Qualified Ident) TypeClassDictionaryInScope)
-> m ()
Expand All @@ -132,7 +132,7 @@ addTypeClassDictionaries mn entries =
where insertState st = M.insertWith (M.unionWith M.union) mn entries (typeClassDictionaries . checkEnv $ st)

checkDuplicateTypeArguments
:: (MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
:: (MonadState CheckState m, MonadError MultipleErrors m)
=> [String]
-> m ()
checkDuplicateTypeArguments args = for_ firstDup $ \dup ->
Expand All @@ -159,7 +159,7 @@ checkTypeClassInstance _ ty = throwError . errorMessage $ InvalidInstanceHead ty
-- Check that type synonyms are fully-applied in a type
--
checkTypeSynonyms
:: (MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m)
:: (MonadState CheckState m, MonadError MultipleErrors m)
=> Type
-> m ()
checkTypeSynonyms = void . replaceAllTypeSynonyms
Expand Down
4 changes: 1 addition & 3 deletions src/Language/PureScript/TypeChecker/Rows.hs
Expand Up @@ -9,17 +9,15 @@ import Prelude.Compat

import Control.Monad
import Control.Monad.Error.Class (MonadError(..))
import Control.Monad.State.Class (MonadState(..))

import Data.List

import Language.PureScript.AST
import Language.PureScript.Errors
import Language.PureScript.TypeChecker.Monad
import Language.PureScript.Types

-- | Ensure rows do not contain duplicate labels
checkDuplicateLabels :: forall m. (MonadError MultipleErrors m, MonadState CheckState m) => Expr -> m ()
checkDuplicateLabels :: forall m. (MonadError MultipleErrors m) => Expr -> m ()
checkDuplicateLabels =
let (_, f, _) = everywhereOnValuesM def go def
in void . f
Expand Down
2 changes: 1 addition & 1 deletion src/Language/PureScript/TypeChecker/Skolems.hs
Expand Up @@ -89,7 +89,7 @@ skolemizeTypesInValue ident sko scope ss =
-- |
-- Ensure skolem variables do not escape their scope
--
skolemEscapeCheck :: (MonadError MultipleErrors m, MonadState CheckState m) => Expr -> m ()
skolemEscapeCheck :: (MonadError MultipleErrors m) => Expr -> m ()
skolemEscapeCheck (TypedValue False _ _) = return ()
skolemEscapeCheck root@TypedValue{} =
-- Every skolem variable is created when a ForAll type is skolemized.
Expand Down
4 changes: 2 additions & 2 deletions src/Language/PureScript/TypeChecker/Types.hs
Expand Up @@ -133,7 +133,7 @@ type TypeData = M.Map (ModuleName, Ident) (Type, NameKind, NameVisibility)
type UntypedData = [(Ident, Type)]

typeDictionaryForBindingGroup ::
(MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) =>
(MonadState CheckState m) =>
ModuleName ->
[(Ident, Expr)] ->
m ([(Ident, Expr)], [(Ident, (Expr, Type, Bool))], TypeData, UntypedData)
Expand Down Expand Up @@ -206,7 +206,7 @@ overTypes f = let (_, f', _) = everywhereOnValues id g id in f'

-- | Check the kind of a type, failing if it is not of kind *.
checkTypeKind ::
(MonadState CheckState m, MonadError MultipleErrors m) =>
(MonadError MultipleErrors m) =>
Type ->
Kind ->
m ()
Expand Down
5 changes: 5 additions & 0 deletions stack-ghc-8.0.yaml
@@ -0,0 +1,5 @@
resolver: nightly-2016-05-29
packages:
- '.'
extra-deps:
- pipes-http-1.0.2

0 comments on commit e716ea5

Please sign in to comment.