cabal-version: 3.0
name: ghc-tcplugin-api
version: 0.2.0.0
synopsis: An API for type-checker plugins.
license: BSD-3-Clause
build-type: Simple
author: Sam Derbyshire
maintainer: Sam Derbyshire
copyright: 2021 Sam Derbyshire
homepage: https://github.com/sheaf/ghc-tcplugin-api
category: Type System, GHC, Plugin
description:
This library provides a streamlined monadic interface
for writing GHC type-checking plugins.
Each stage in a type-checking plugin (initialisation, solving, rewriting,
shutdown) has a corresponding monad, preventing operations that are only
allowed in some stages to be used in the other stages.
Operations that work across multiple stages are overloaded across monads
using MTL-like typeclasses.
Some operations, like creating evidence for constraints or creating
custom type error messages, are also simplified.
Please refer to the <https://github.com/sheaf/ghc-tcplugin-api associated GitHub repository>
for example usage.
extra-source-files:
changelog.md
library
build-depends:
base
>= 4.15.0 && < 4.18,
ghc
>= 9.0 && < 9.5,
transformers
>= 0.5 && < 0.6,
default-language:
Haskell2010
ghc-options:
-Wall
-Wcompat
-fwarn-missing-local-signatures
-fwarn-incomplete-uni-patterns
-fwarn-missing-deriving-strategies
-fno-warn-unticked-promoted-constructors
hs-source-dirs:
src
exposed-modules:
GHC.TcPlugin.API,
GHC.TcPlugin.API.Internal
if impl(ghc >= 9.3.0)
cpp-options: -DHAS_REWRITING
else
other-modules:
GHC.TcPlugin.API.Internal.Shim
if impl(ghc < 9.5.0)
cpp-options: -DHAS_DERIVEDS