polysemy/package.yaml
Sandy Maguire faaf1e3a96
Don't use Loopbreaker until GHC 8.7+ (#164)
Turns out haddocks have been broken forever, but because of haskell/cabal#5977 we never noticed. This PR fixes CI so it breaks (see 6f915b6), and then fixes it by changing the GHC versions under which we're allowed to use loopbreaker. Fixes #160
2019-07-07 11:27:18 -04:00

123 lines
2.9 KiB
YAML

name: polysemy
version: 0.6.0.0
github: "isovector/polysemy"
license: BSD3
author: "Sandy Maguire"
maintainer: "sandy@sandymaguire.me"
copyright: "2019 Sandy Maguire"
extra-source-files:
- README.md
- ChangeLog.md
synopsis: Higher-order, low-boilerplate, zero-cost free monads.
category: Language
description: Please see the README on GitHub at <https://github.com/isovector/polysemy#readme>
dependencies:
- base >= 4.9 && < 5
- containers >= 0.5 && < 0.7
- mtl >= 2.2.2 && < 3
- syb >= 0.7 && < 0.8
- template-haskell >= 2.12.0.0 && < 3
- th-abstraction >= 0.3.1.0 && < 0.4
- transformers >= 0.5.2.0 && < 0.6
- first-class-families >= 0.5.0.0 && < 0.6
- unagi-chan >= 0.4.0.0 && < 0.5
- async >= 2.2 && < 3
- type-errors >= 0.2.0.0
default-extensions:
- DataKinds
- DeriveFunctor
- FlexibleContexts
- GADTs
- LambdaCase
- PolyKinds
- RankNTypes
- ScopedTypeVariables
- StandaloneDeriving
- TypeApplications
- TypeOperators
- TypeFamilies
- UnicodeSyntax
when:
- condition: impl(ghc < 8.6)
default-extensions:
- MonadFailDesugaring
- TypeInType
- condition: impl(ghc >= 8.7)
dependencies:
- loopbreaker >= 0.1 && < 0.2
flags:
dump-core:
description: Dump HTML for the core generated by GHC during compilation
default: False
manual: True
error-messages:
description: Provide custom error messages
default: True
manual: True
library:
ghc-options: -Wall
source-dirs: src
other-modules: Polysemy.Internal.PluginLookup
when:
- condition: flag(dump-core)
dependencies:
- dump-core
ghc-options:
- -fplugin=DumpCore
- -fplugin-opt=DumpCore:core-html
- condition: impl(ghc < 8.2.2)
dependencies:
- unsupported-ghc-version > 1 && < 1
# We use this plugin to get to more agressive inlining without need for
# explicit "loopbreakers" in function definitions all over ther codebase
# --- sadly it can only work on newer versions of GHC currently
- condition: impl(ghc >= 8.7)
ghc-options:
- -fplugin=Loopbreaker
- condition: flag(error-messages)
then:
# dummy value because cabal is stupid
cpp-options: -DCABAL_SERIOUSLY_CMON_MATE
else:
cpp-options: -DNO_ERROR_MESSAGES
tests:
polysemy-test:
main: Main.hs
source-dirs: test
ghc-options:
- -threaded
- -rtsopts
- -with-rtsopts=-N
build-tools:
- hspec-discover >= 2.0
dependencies:
- polysemy
- inspection-testing >= 0.4.2 && < 0.5
- hspec >= 2.6.0 && < 3
- doctest >= 0.16.0.1 && < 0.17
benchmarks:
polysemy-bench:
source-dirs: bench
main: countDown.hs
dependencies:
- criterion
- free
- freer-simple
- mtl
- polysemy