diagnose/package.yaml
2023-05-13 12:39:02 +02:00

133 lines
3.4 KiB
YAML

name: diagnose
version: 2.4.0
github: "mesabloo/diagnose"
license: BSD3
author: "Ghilain Bergeron"
copyright: "2021-2022 Ghilain Bergeron"
category: "Error Reporting"
dependencies:
- base >= 4.7 && < 5
- array >= 0.5 && < 0.6
- data-default >= 0.7 && < 1
- dlist >= 1.0 && < 1.1
- hashable >= 1.3 && < 2
- prettyprinter >= 1.7.0 && < 2
- prettyprinter-ansi-terminal >= 1.1.2 && < 2
- unordered-containers >= 0.2.11 && < 0.3
- wcwidth >= 0.0.1 && <1
- text >= 1.0.0.0 && <= 2.0
# ^^^ This is unfortunately required, but as 'prettyprinter' already depends on it, it will already have been fetched
# into the local cache anyway.
default-extensions:
- OverloadedStrings
- LambdaCase
- BlockArguments
library:
source-dirs: src
exposed-modules:
- Error.Diagnose
- Error.Diagnose.Diagnostic
- Error.Diagnose.Position
- Error.Diagnose.Pretty
- Error.Diagnose.Report
- Error.Diagnose.Style
when:
- condition: flag(megaparsec-compat)
exposed-modules:
- Error.Diagnose.Compat.Megaparsec
- condition: flag(parsec-compat)
exposed-modules:
- Error.Diagnose.Compat.Parsec
flags:
json:
description: "Allows exporting diagnostics as JSON.
This is disabled by default as this relies on the very heavy dependency Aeson."
manual: true
default: false
megaparsec-compat:
description: "Includes a small compatibility layer (in the module `Error.Diagnose.Compat.Megaparsec`) to transform megaparsec errors into reports for this library."
manual: true
default: false
parsec-compat:
description: "Includes a small compatibility layer (in the module `Error.Diagnose.Compat.Parsec`) to transform parsec errors into reports for this library."
manual: true
default: false
# do the same for other parsing libraries like parsec or attoparsec
when:
- condition: flag(json)
dependencies:
- aeson >= 1.5 && <3
- bytestring >= 0.9 && < 1
cpp-options:
- -DUSE_AESON
- condition: flag(megaparsec-compat)
dependencies:
- megaparsec >= 9.0.0
- containers == 0.6.*
- condition: flag(parsec-compat)
dependencies:
- parsec >= 3.1.14
ghc-options:
- -Wall
- -Wextra
# - -Wmissing-local-signatures
# - -Wmonomorphism-restriction
extra-source-files:
- README.md
tests:
diagnose-rendering-tests:
main: Spec.hs
source-dirs: test/rendering
ghc-options:
- -threaded
- -rtsopts
- -with-rtsopts=-N
dependencies:
- diagnose
diagnose-megaparsec-tests:
main: Spec.hs
source-dirs: test/megaparsec
ghc-options:
- -threaded
- -rtsopts
- -with-rtsopts=-N
dependencies:
- diagnose
- text >= 1.2 && < 3
when:
- condition: ! '!(flag(megaparsec-compat))'
buildable: false
diagnose-parsec-tests:
main: Spec.hs
source-dirs: test/parsec
ghc-options:
- -threaded
- -rtsopts
- -with-rtsopts=-N
dependencies:
- diagnose
- text >= 1.2 && < 3
when:
- condition: ! '!(flag(parsec-compat))'
buildable: false
# This is put at the end for convenience.
synopsis: Beautiful error reporting done easily
description: |
This package provides a simple way of getting beautiful compiler/interpreter errors
using a very simple interface for the programmer.
A quick tutorial is available in the module "Error.Diagnose", which goes on most of the basis
of how to use it.