packages feed

polytropos-plugin-0.1.0.2: polytropos-plugin.cabal

cabal-version:      3.0
name:               polytropos-plugin
version: 0.1.0.2
synopsis:           TcPlugin that emits literal evidence for Polytropos row classes
description:
  A GHC typechecker plugin for <https://hackage.haskell.org/package/polytropos polytropos>
  that solves the evidence-class constraints ('Polytropos.Core.FieldIndex',
  'Polytropos.Core.ConstructorIndex', 'Polytropos.Core.RowEq', 'Polytropos.Core.RowShow',
  'Polytropos.Core.RowEqSum', 'Polytropos.Core.RowShowSum', 'Polytropos.Core.AllFields')
  by inspecting the row carried in a 'Polytropos.Core.RowRep''s type and emitting literal
  slot indices, tags, and dictionary vectors directly into GHC Core AST — eliminating
  inductive type-level search and pointer-chasing runtime overhead entirely.

  Uses the <https://hackage.haskell.org/package/ghc-tcplugin-api ghc-tcplugin-api> library
  for a streamlined interface to GHC's typechecker plugin API across compiler versions.

  Start at the front door module "Polytropos.Plugin" for complete usage
  instructions and worked examples. Enable in consuming packages via:
  @ghc-options: -fplugin=Polytropos.Plugin@.
license:            EUPL-1.2 OR Apache-2.0
license-file:       LICENSE
author:             Nadia Yvette Chambers
maintainer:         nadia.yvette.chambers@ik.me
category:           Compiler Plugin
homepage:           https://github.com/NadiaYvette/polytropos
bug-reports:        https://github.com/NadiaYvette/polytropos/issues
extra-doc-files:    README.md
                  , CHANGELOG.md

source-repository head
  type:     git
  location: https://github.com/NadiaYvette/polytropos
  subdir:   packages/polytropos-plugin

common warnings
  ghc-options:
      -Wall
      -Wcompat
      -Widentities
      -Wincomplete-record-updates
      -Wincomplete-uni-patterns
      -Wredundant-constraints
      -Wunused-packages

library
  import:           warnings
  exposed-modules:  Polytropos.Plugin
                  , Polytropos.Plugin.Source
  other-modules:    Polytropos.Plugin.Compat
  hs-source-dirs:   src
  default-language: GHC2021
  build-depends:
      base       >= 4.18 && < 4.23
    , ghc         >= 9.6  && < 9.15
    , ghc-tcplugin-api >= 0.1 && < 0.21

test-suite polytropos-plugin-smoke
  import:           warnings
  type:             exitcode-stdio-1.0
  hs-source-dirs:   tests/smoke
  main-is:          Main.hs
  default-language: GHC2021
  build-depends:
      base       >= 4.18 && < 4.23
    , polytropos-core
    , primitive
    , tasty         >= 1.4  && < 1.6
    , tasty-hunit   >= 0.10 && < 0.11
    , polytropos-plugin
    , process
    , filepath
    , directory

  ghc-options:
      -fplugin=Polytropos.Plugin