forked from Mesabloo/diagnose
-
Notifications
You must be signed in to change notification settings - Fork 0
/
package.yaml
132 lines (119 loc) · 3.38 KB
/
package.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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.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 && <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.