packages feed

ghc-plugs-out-1.0.0.0: ghc-plugs-out.cabal

cabal-version: 3.0

name:           ghc-plugs-out
version:        1.0.0.0
synopsis:       Type checker plugins without the type checking.
description:
  Tests that show how typechecker plugins interact with GHC depending on their
  purity, how they're wired up and whether GHC needs help typechecking.
category:       Compiler Plugin
author:         Phil de Joux
maintainer:     phil.dejoux@blockscope.com
copyright:      © 2020 Phil de Joux, © 2020 Block Scope Limited
homepage:       https://github.com/blockscope/ghc-plugs-out
license:        MPL-2.0
license-file:   LICENSE.md
tested-with:    GHC == 8.8.3, GHC == 8.10.1
build-type:     Simple
extra-source-files:
  changelog.md, README.rst

source-repository head
  type: git
  location: https://github.com/blockscope/ghc-plugs-out

common opts
  ghc-options:
    -Wall
    -Wincomplete-uni-patterns
    -Wcompat
    -Widentities
    -Wredundant-constraints
    -fhide-source-paths
  default-language: Haskell2010

library no-op-plugin
  import: opts
  exposed-modules:
      NoOp.Plugin
  hs-source-dirs:
      plugins/noop
  build-depends:
      base >= 4.13 && < 5
    , ghc

library undefined-init-plugin
  import: opts
  exposed-modules:
      Undefined.Init.Plugin
  hs-source-dirs:
      plugins/init
  build-depends:
      base >= 4.13 && < 5
    , ghc
    , no-op-plugin

library undefined-solve-plugin
  import: opts
  exposed-modules:
      Undefined.Solve.Plugin
  hs-source-dirs:
      plugins/solve
  build-depends:
      base >= 4.13 && < 5
    , ghc
    , no-op-plugin

library undefined-stop-plugin
  import: opts
  exposed-modules:
      Undefined.Stop.Plugin
  hs-source-dirs:
      plugins/stop
  build-depends:
      base >= 4.13 && < 5
    , ghc
    , no-op-plugin

library call-count-plugin
  import: opts
  exposed-modules:
      CallCount.TcPlugin
      CallCount.Pure.Plugin
      CallCount.Impure.Plugin
  hs-source-dirs:
      plugins/call-count
  build-depends:
      base >= 4.13 && < 5
    , ghc
    , th-printf
    , no-op-plugin

test-suite test-undefined-init
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test-suites/undef-init
  build-depends:
      base >= 4.13 && < 5
    , undefined-init-plugin

test-suite test-undefined-init-carefree
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test-suites/undef-init-carefree
  build-depends:
      base >= 4.13 && < 5
    , undefined-init-plugin

test-suite test-undefined-solve
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test-suites/undef-solve
  build-depends:
      base >= 4.13 && < 5
    , undefined-solve-plugin

test-suite test-undefined-solve-carefree
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test-suites/undef-solve-carefree
  build-depends:
      base >= 4.13 && < 5
    , undefined-solve-plugin

test-suite test-undefined-stop
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test-suites/undef-stop
  build-depends:
      base >= 4.13 && < 5
    , undefined-stop-plugin

test-suite test-undefined-stop-carefree
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test-suites/undef-stop-carefree
  build-depends:
      base >= 4.13 && < 5
    , undefined-stop-plugin

test-suite test-wireup-pure-by-option
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test-suites/wireup-pure-by-option
  ghc-options: -Wall -fplugin CallCount.Pure.Plugin
  build-depends:
      base >= 4.13 && < 5
    , call-count-plugin

test-suite test-wireup-pure-by-pragma
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test-suites/wireup-pure-by-pragma
  build-depends:
      base >= 4.13 && < 5
    , call-count-plugin

test-suite test-wireup-pure-by-both
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test-suites/wireup-pure-by-pragma
  ghc-options: -Wall -fplugin CallCount.Pure.Plugin
  build-depends:
      base >= 4.13 && < 5
    , call-count-plugin

test-suite test-wireup-impure-by-option
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test-suites/wireup-impure-by-option
  ghc-options: -Wall -fplugin CallCount.Impure.Plugin
  build-depends:
      base >= 4.13 && < 5
    , call-count-plugin

test-suite test-wireup-impure-by-pragma
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test-suites/wireup-impure-by-pragma
  build-depends:
      base >= 4.13 && < 5
    , call-count-plugin

test-suite test-wireup-impure-by-both
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test-suites/wireup-impure-by-pragma
  ghc-options: -Wall -fplugin CallCount.Impure.Plugin
  build-depends:
      base >= 4.13 && < 5
    , call-count-plugin

test-suite test-counter-main
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      test-suites/counter-main
  build-depends:
      base >= 4.13 && < 5
    , call-count-plugin

test-suite test-counter-foo-bar-main
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  other-modules: Foo Bar
  hs-source-dirs:
      test-suites/counter-foo-bar-main
  build-depends:
      base >= 4.13 && < 5
    , call-count-plugin

test-suite test-counter-foobar-main
  import: opts
  type: exitcode-stdio-1.0
  main-is: Main.hs
  other-modules: FooBar
  hs-source-dirs:
      test-suites/counter-foobar-main
  build-depends:
      base >= 4.13 && < 5
    , call-count-plugin