packages feed

moonlight-pale-0.1.0.2: moonlight-pale.cabal

cabal-version:       3.0
name:                moonlight-pale
version:             0.1.0.2
homepage:            https://github.com/PaleRoses/moonlight
bug-reports:         https://github.com/PaleRoses/moonlight/issues
synopsis:            Shared diagnostics, law testing, and GHC/HIE tooling for Moonlight.
description:         Role-specific public libraries for diagnostics, law testing, benchmarking, GHC/HIE source tooling, and compile-diagnostic support.
license:             MIT
license-file:        LICENSE
author:              Blue Rose
maintainer:          rosaliafialkova@gmail.com
category:            Development
build-type:          Simple
tested-with:         GHC == 9.10.3, GHC == 9.12.4, GHC == 9.14.1
extra-doc-files:
    README.md
    CHANGELOG.md
extra-source-files:
    test/compile-diagnostics/fixtures/Trivial.hs

common shared-properties
  default-language: GHC2024
  ghc-options:
    -Wall
    -Wcompat
    -Wincomplete-record-updates
    -Wincomplete-uni-patterns
    -Wredundant-constraints
    -Wpartial-fields
    -Wno-missing-import-lists

common test-properties
  import: shared-properties

library ghc-surface
  import: shared-properties
  visibility: public
  hs-source-dirs: src-ghc-surface
  if impl(ghc < 9.14)
    buildable: False
  exposed-modules:
    Moonlight.Pale.Ghc.Expr
    Moonlight.Pale.Ghc.Expr.Parse
    Moonlight.Pale.Ghc.Hie.Oracle
    Moonlight.Pale.Ghc.Hie.Read
    Moonlight.Pale.Ghc.Hie.SourceKey
    Moonlight.Pale.Ghc.Hie.TypeWords
    Moonlight.Pale.Ghc.ModuleSurface
  other-modules:
    Moonlight.Pale.Ghc.Expr.Equivalence
    Moonlight.Pale.Ghc.Expr.Render
    Moonlight.Pale.Ghc.Expr.Render.Analysis
    Moonlight.Pale.Ghc.Expr.Render.Annotation
    Moonlight.Pale.Ghc.Expr.Render.Binding
    Moonlight.Pale.Ghc.Expr.Render.Carrier
    Moonlight.Pale.Ghc.Expr.Render.Document
    Moonlight.Pale.Ghc.Expr.Render.Expression
    Moonlight.Pale.Ghc.Expr.Render.Literal
    Moonlight.Pale.Ghc.Expr.Render.Module
    Moonlight.Pale.Ghc.Expr.Render.Name
    Moonlight.Pale.Ghc.Expr.Render.Pattern
    Moonlight.Pale.Ghc.Expr.Render.Refusal
    Moonlight.Pale.Ghc.Expr.Convert.Coalgebra
    Moonlight.Pale.Ghc.Expr.Convert.Declaration
    Moonlight.Pale.Ghc.Expr.Convert.Dependencies
    Moonlight.Pale.Ghc.Expr.Convert.Expression
    Moonlight.Pale.Ghc.Expr.Convert.FreeScopes
    Moonlight.Pale.Ghc.Expr.Convert.Metrics
    Moonlight.Pale.Ghc.Expr.Convert.Obstruction
    Moonlight.Pale.Ghc.Expr.Convert.Pattern
    Moonlight.Pale.Ghc.Expr.Convert.Projection
    Moonlight.Pale.Ghc.Expr.Convert.Row
    Moonlight.Pale.Ghc.Expr.Convert.Source
    Moonlight.Pale.Ghc.Expr.Convert.State
    Moonlight.Pale.Ghc.Expr.NameRender
    Moonlight.Pale.Ghc.Expr.Opaque
    Moonlight.Pale.Ghc.Expr.Scope
    Moonlight.Pale.Ghc.Expr.Syntax
    Moonlight.Pale.Ghc.Hie.TypeWords.Internal
  build-depends:
    base >= 4.22 && < 5
    , array >= 0.5 && < 0.6
    , bytestring >= 0.12 && < 0.13
    , containers >= 0.8 && < 0.9
    , directory >= 1.3 && < 1.4
    , filepath >= 1.5 && < 1.6
    , ghc >= 9.14 && < 9.16
    , ghc-boot-th >= 9.14 && < 9.16
    , moonlight-core >= 0.1 && < 0.2
    , mtl >= 2.3 && < 2.4
    , primitive >= 0.9 && < 0.10
    , prettyprinter >= 1.7 && < 1.8
    , transformers >= 0.6 && < 0.7
    , text >= 2.1 && < 2.2
    , vector >= 0.13 && < 0.14

library diagnostic
  import: shared-properties
  visibility: public
  hs-source-dirs: src-diagnostic
  if impl(ghc < 9.14)
    buildable: False
  exposed-modules:
    Moonlight.Pale.Diagnostic.Core
    Moonlight.Pale.Diagnostic.Topology.Boundary
    Moonlight.Pale.Diagnostic.Topology.Homotopy
    Moonlight.Pale.Diagnostic.Topology.Cohomology
    Moonlight.Pale.Diagnostic.Summary.Structural
    Moonlight.Pale.Diagnostic.Local.Propagation
    Moonlight.Pale.Diagnostic.Local.Replay
    Moonlight.Pale.Diagnostic.Local.Rewrite
    Moonlight.Pale.Diagnostic.Local.Saturation
    Moonlight.Pale.Diagnostic.Views.Rewrite
    Moonlight.Pale.Diagnostic.Aggregation.Propagation
    Moonlight.Pale.Diagnostic.Aggregation.Algebra
  build-depends:
    base >= 4.22 && < 5
    , containers >= 0.8 && < 0.9

library test
  import: shared-properties
  visibility: public
  hs-source-dirs: src-test
  exposed-modules:
    Moonlight.Pale.Test.Core
    Moonlight.Pale.Test.Assertions
    Moonlight.Pale.Test.Resources
    Moonlight.Pale.Test.Recursion
  build-depends:
    base >= 4.20 && < 5
    , containers >= 0.8 && < 0.9
    , directory >= 1.3 && < 1.4
    , filepath >= 1.5 && < 1.6
    , tasty-hunit >= 0.10 && < 0.11

library measurement
  import: shared-properties
  visibility: public
  hs-source-dirs: src-bench
  if impl(ghc < 9.14)
    buildable: False
  exposed-modules:
    Moonlight.Pale.Bench.Measure
  build-depends:
    base >= 4.22 && < 5
    , deepseq >= 1.5 && < 1.6

test-suite moonlight-pale-bench-measure-test
  import: test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs: test/bench-measure
  main-is: Main.hs
  if impl(ghc < 9.14)
    buildable: False
  ghc-options: -threaded -rtsopts -with-rtsopts=-T
  build-depends:
    base >= 4.22 && < 5
    , moonlight-pale:measurement
    , tasty >= 1.5 && < 1.6
    , tasty-hunit >= 0.10 && < 0.11

library test-surface
  import: shared-properties
  visibility: public
  hs-source-dirs: src-test-surface
  if impl(ghc < 9.14)
    buildable: False
  exposed-modules:
    Moonlight.Pale.Test.ImportDiscipline
    Moonlight.Pale.Test.ImportDiscipline.Registry
  build-depends:
    base >= 4.22 && < 5
    , Cabal-syntax >= 3.16 && < 3.17
    , containers >= 0.8 && < 0.9
    , directory >= 1.3 && < 1.4
    , filepath >= 1.5 && < 1.6
    , tasty-hunit >= 0.10 && < 0.11
    , text >= 2.1 && < 2.2
    , moonlight-pale:ghc-surface
    , moonlight-pale:test

library test-laws
  import: shared-properties
  visibility: public
  hs-source-dirs: src-test-laws
  default-extensions: OverloadedStrings
  exposed-modules:
    Moonlight.Pale.Test.Laws.Algebraic
    Moonlight.Pale.Test.Laws.Lattice
    Moonlight.Pale.Test.Laws.Restriction
    Moonlight.Pale.Test.Laws.Suite
  build-depends:
    base >= 4.20 && < 5
    , containers >= 0.8 && < 0.9
    , hedgehog >= 1.7 && < 1.8
    , moonlight-core >= 0.1.0.3 && < 0.2
    , tasty >= 1.5 && < 1.6
    , tasty-hedgehog >= 1.4 && < 1.5
    , tasty-hunit >= 0.10 && < 0.11
    , tasty-quickcheck >= 0.11 && < 0.12
    , vector >= 0.13 && < 0.14

library diagnostic-ghc
  import: shared-properties
  visibility: public
  hs-source-dirs: src-diagnostic-ghc
  if impl(ghc < 9.14)
    buildable: False
  exposed-modules:
    Moonlight.Pale.TestSupport.CompileDiagnostics
    Moonlight.Pale.TestSupport.CompileHieFixture
  build-depends:
    base >= 4.22 && < 5
    , aeson >= 2.3 && < 2.4
    , bytestring >= 0.12 && < 0.13
    , directory >= 1.3 && < 1.4
    , filepath >= 1.5 && < 1.6
    , moonlight-pale:ghc-surface
    , process >= 1.6 && < 1.7
    , temporary >= 1.3 && < 1.4
    , text >= 2.1 && < 2.2
    , moonlight-pale:test

test-suite moonlight-pale-ghc-surface-test
  import: test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs: test/ghc-surface
  main-is: Main.hs
  if impl(ghc < 9.14)
    buildable: False
  other-modules:
    Hie.OracleSpec
    Hie.TypeWordsSpec
    ModuleSurfaceSpec
    Expr.RenderRoundTripSpec
    Expr.SourceCoordinatesSpec
  build-depends:
    base >= 4.22 && < 5
    , array >= 0.5 && < 0.6
    , bytestring >= 0.12 && < 0.13
    , containers >= 0.8 && < 0.9
    , directory >= 1.3 && < 1.4
    , filepath >= 1.5 && < 1.6
    , ghc >= 9.14 && < 9.16
    , moonlight-core >= 0.1 && < 0.2
    , moonlight-pale:diagnostic-ghc
    , moonlight-pale:ghc-surface
    , moonlight-pale:test
    , process >= 1.6 && < 1.7
    , tasty >= 1.5 && < 1.6
    , tasty-hunit >= 0.10 && < 0.11
    , text >= 2.1 && < 2.2
    , vector >= 0.13 && < 0.14

test-suite moonlight-pale-diagnostic-test
  import: test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs: test/diagnostic
  main-is: Main.hs
  if impl(ghc < 9.14)
    buildable: False
  other-modules:
    WriterSpec
    OutcomeSpec
    RefinementSpec
    CohomologySpec
  build-depends:
    base >= 4.22 && < 5
    , containers >= 0.8 && < 0.9
    , tasty >= 1.5 && < 1.6
    , tasty-hunit >= 0.10 && < 0.11
    , moonlight-pale:diagnostic

test-suite moonlight-pale-test-laws-test
  import: test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs: test/laws
  main-is: Main.hs
  default-extensions: OverloadedStrings
  other-modules:
    AlgebraicSpec
    LatticeSpec
    RestrictionSpec
    SuiteSpec
  build-depends:
    base >= 4.20 && < 5
    , containers >= 0.8 && < 0.9
    , moonlight-core >= 0.1 && < 0.2
    , tasty >= 1.5 && < 1.6
    , tasty-hunit >= 0.10 && < 0.11
    , tasty-quickcheck >= 0.11 && < 0.12
    , moonlight-pale:test-laws

test-suite moonlight-pale-test-support-test
  import: test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs: test/test-support
  main-is: Main.hs
  other-modules:
    Assertions.AssertionSpec
    Recursion.RecursionSpec
    Resources.ResourceSpec
  build-depends:
    base >= 4.20 && < 5
    , containers >= 0.8 && < 0.9
    , hedgehog >= 1.7 && < 1.8
    , tasty >= 1.5 && < 1.6
    , tasty-hedgehog >= 1.4 && < 1.5
    , tasty-hunit >= 0.10 && < 0.11
    , tasty-quickcheck >= 0.11 && < 0.12
    , moonlight-pale:test

test-suite moonlight-pale-test-surface-test
  import: test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs: test/import-discipline
  main-is: Main.hs
  if impl(ghc < 9.14)
    buildable: False
  other-modules:
    DisciplineSpec
    RegistrySpec
  build-depends:
    base >= 4.22 && < 5
    , containers >= 0.8 && < 0.9
    , tasty >= 1.5 && < 1.6
    , tasty-hunit >= 0.10 && < 0.11
    , moonlight-pale:test-surface

test-suite moonlight-pale-diagnostic-ghc-test
  import: test-properties
  type: exitcode-stdio-1.0
  hs-source-dirs: test/compile-diagnostics
  main-is: Main.hs
  if impl(ghc < 9.14)
    buildable: False
  other-modules:
    CompileDiagnosticsSpec
  build-depends:
    base >= 4.22 && < 5
    , aeson >= 2.3 && < 2.4
    , directory >= 1.3 && < 1.4
    , tasty >= 1.5 && < 1.6
    , tasty-hunit >= 0.10 && < 0.11
    , moonlight-pale:diagnostic-ghc
    , moonlight-pale:test

common moonlight-pale-benchmark-properties
  default-language: GHC2024
  -- Benchmarks are opt-in; their measurement contract requires optimized code.
  ghc-options: -Wall -Wcompat -O2 -rtsopts
  build-depends:
    base >= 4.22 && < 5
    , deepseq >= 1.5 && < 1.6
    , tasty-bench >= 0.5 && < 0.6

benchmark moonlight-pale-diagnostic-bench
  import: moonlight-pale-benchmark-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    bench/diagnostic
    bench/support
  main-is: Main.hs
  other-modules:
    DiagnosticBench
    BenchSupport
  build-depends:
    moonlight-pale:diagnostic

benchmark moonlight-pale-ghc-surface-bench
  import: moonlight-pale-benchmark-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    bench/ghc-surface
    bench/support
  main-is: Main.hs
  other-modules:
    GhcSurfaceBench
    HieBench
    BenchSupport
  build-depends:
    array >= 0.5 && < 0.6
    , containers >= 0.8 && < 0.9
    , ghc >= 9.14 && < 9.16
    , moonlight-core >= 0.1 && < 0.2
    , moonlight-pale:ghc-surface
    , text >= 2.1 && < 2.2

benchmark moonlight-pale-laws-bench
  import: moonlight-pale-benchmark-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    bench/laws
    bench/support
  main-is: Main.hs
  other-modules:
    LawBench
    BenchSupport
  build-depends:
    moonlight-pale:test-laws

benchmark moonlight-pale-equivalence-receipts
  import: moonlight-pale-benchmark-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    bench/receipts
    bench/diagnostic
    bench/ghc-surface
    bench/support
  main-is: Main.hs
  ghc-options: -threaded -with-rtsopts=-T
  other-modules:
    DiagnosticBench
    GhcSurfaceBench
    BenchSupport
  build-depends:
    moonlight-core >= 0.1 && < 0.2
    , moonlight-pale:diagnostic
    , moonlight-pale:ghc-surface
    , moonlight-pale:measurement
    , text >= 2.1 && < 2.2

benchmark moonlight-pale-bench
  import: moonlight-pale-benchmark-properties
  type: exitcode-stdio-1.0
  hs-source-dirs:
    bench/aggregate
    bench/diagnostic
    bench/ghc-surface
    bench/laws
    bench/support
  main-is: Main.hs
  other-modules:
    DiagnosticBench
    GhcSurfaceBench
    HieBench
    LawBench
    BenchSupport
  build-depends:
    array >= 0.5 && < 0.6
    , containers >= 0.8 && < 0.9
    , ghc >= 9.14 && < 9.16
    , moonlight-core >= 0.1 && < 0.2
    , moonlight-pale:diagnostic
    , moonlight-pale:ghc-surface
    , moonlight-pale:test-laws
    , text >= 2.1 && < 2.2

source-repository head
  type:     git
  location: https://github.com/PaleRoses/moonlight.git
  subdir:   moonlight-pale

source-repository this
  type:     git
  location: https://github.com/PaleRoses/moonlight.git
  tag:      moonlight-pale-0.1.0.2
  subdir:   moonlight-pale