packages feed

ghc-tcplugin-api-0.2.0.0: ghc-tcplugin-api.cabal

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