mirror of
https://github.com/Mesabloo/diagnose.git
synced 2024-09-11 11:26:56 +03:00
Using an unboxed array has better performance than using a `HashMap Int Int`: although both data structures support O(1) access, the array has a better constant factor. Additionally, an array is suited very well since we we have a character width for every index i in [1..n].
133 lines
3.4 KiB
YAML
133 lines
3.4 KiB
YAML
name: diagnose
|
|
version: 2.1.1
|
|
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.0 && < 2
|
|
- unordered-containers >= 0.2 && < 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 && <2
|
|
- 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.
|