-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathfile-location.cabal
94 lines (85 loc) · 2.76 KB
/
file-location.cabal
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
Name: file-location
Version: 0.4.9.1
Synopsis: common functions that show file location information
Homepage: https://github.com/gregwebs/FileLocation.hs
License: BSD3
License-file: LICENSE
Author: Greg Weber
Maintainer: [email protected]
Category: Development
Build-type: Simple
Cabal-version: >=1.8
Description:
Common debugging\/error\/exception functions that give file location information
.
@
$(err \"OH NO!\")
main:Main main.hs:16:1 OH NO!
@
.
Notice how it displays package:module file:line:character
.
It exposes the functions err (error), undef (undefined), and trc (Debug.Trace.trace). All of these behave the same as their normal counterpart but also spit out a location.
.
Here is my favorite helper, debug, which is like trace but just show the value.
.
@
debug [1,2,3]
DEBUG: [1,2,3]
[1,2,3]
@
.
And The Template Haskell version.
.
@
$(dbg) [1,2,3]
DEBUG main:Main main.hs:1:3 [1,2,3]
[1,2,3]
@
.
Also there is a version of thrwIO that gives location information
.
@
($(thrwIO) $ AException) `catch` \e -> putStrLn (\"Caught \" ++ show (e :: AException))
Caught AException \"main:Main test/main.hs:25:6\"
@
.
See module for a listing of all the functions with short descriptions, and the homepage for some more examples https://github.com/gregwebs/ErrorLocation.hs
extra-source-files:
test/*.sh
test/*.hs
test/*.shelltest
test/bench/*.hs
test/bench/*.md
test/bench/*.h
Library
Exposed-modules: FileLocation,
Debug.FileLocation,
Control.Exception.FileLocation,
Debug.Util,
FileLocation.LocationString
Test.FileLocation
-- Packages needed in order to build this package.
Build-depends: base >= 4 && < 5
, lifted-base
, template-haskell
, th-orphans >= 0.9
, transformers >= 0.2 && < 0.6
, containers
, HUnit
-- This just helps you get the packages for test/main.hs
-- tests are ran with test/run.sh
-- probably can run it entirely through this interface with just a little work
test-suite test
type: exitcode-stdio-1.0
main-is: main.hs
hs-source-dirs: test
ghc-options: -Wall
Build-depends: file-location
, base >= 4 && < 5
, lifted-base
, process
-- shelltestrunner: need shelltest executable
Source-Repository head
type: git
location: https://github.com/gregwebs/FileLocation.hs