Commit c3b02150 authored by Alan Zimmerman's avatar Alan Zimmerman Committed by Ben Gamari
Browse files

Provide a utility to check API Annotations docs

A utility to check API Annotations was provided in
https://git.haskell.org/ghc.git/commitdiff/43751b2436f370d956d8021b3cdd3
eb77801470b

This commit had poor documentation.

This patch improves the output generated by the utility as well as
supplying better documentation

Test Plan: ./validate

Reviewers: simonpj, austin, bgamari

Reviewed By: austin, bgamari

Subscribers: thomie, mpickering

Differential Revision: https://phabricator.haskell.org/D1397

GHC Trac Issues: #10917
parent 31bcf9b6
...@@ -312,6 +312,11 @@ See ...@@ -312,6 +312,11 @@ See
https://ghc.haskell.org/trac/ghc/wiki/GhcAstAnnotations https://ghc.haskell.org/trac/ghc/wiki/GhcAstAnnotations
for some background. for some background.
If you modify the parser and want to ensure that the API annotations are processed
correctly, see the README in (REPO)/utils/check-api-annotations for details on
how to set up a test using the check-api-annotations utility, and interpret the
output it generates.
-- ----------------------------------------------------------------------------- -- -----------------------------------------------------------------------------
-} -}
......
...@@ -62,7 +62,8 @@ T10280: ...@@ -62,7 +62,8 @@ T10280:
.PHONY: T10269 .PHONY: T10269
T10269: T10269:
$(CHECK_API_ANNOTATIONS) "`'$(TEST_HC)' $(TEST_HC_OPTS) --print-libdir | tr -d '\r'`" Test10269 # Ignore result code, we have an unattached (superfluous) AnnVal
- $(CHECK_API_ANNOTATIONS) "`'$(TEST_HC)' $(TEST_HC_OPTS) --print-libdir | tr -d '\r'`" Test10269
.PHONY: T10312 .PHONY: T10312
T10312: T10312:
......
---Problems--------------------- ---Problems (should be empty list)---
[]
---Annotations-----------------------
-- SrcSpan the annotation is attached to, AnnKeywordId,
-- list of locations the keyword item appears in
[ [
(AK <no location info> AnnEofPos = [Test10255.hs:8:1]) ((Test10255.hs:1:1,AnnModule), [Test10255.hs:2:1-6]),
] ((Test10255.hs:1:1,AnnWhere), [Test10255.hs:2:18-22]),
((Test10255.hs:4:1-17,AnnImport), [Test10255.hs:4:1-6]),
---Problems'-------------------- ((Test10255.hs:4:1-17,AnnSemi), [Test10255.hs:6:1]),
[(AnnEofPos, Test10255.hs:8:1)] ((Test10255.hs:(6,1)-(7,11),AnnEqual), [Test10255.hs:6:29]),
-------------------------------- ((Test10255.hs:(6,1)-(7,11),AnnFunId), [Test10255.hs:6:1-3]),
[ ((Test10255.hs:(6,1)-(7,11),AnnSemi), [Test10255.hs:8:1]),
(AK Test10255.hs:1:1 AnnModule = [Test10255.hs:2:1-6]) ((Test10255.hs:6:5-27,AnnCloseP), [Test10255.hs:6:27]),
((Test10255.hs:6:5-27,AnnOpenP), [Test10255.hs:6:5]),
(AK Test10255.hs:1:1 AnnWhere = [Test10255.hs:2:18-22]) ((Test10255.hs:6:6-26,AnnDcolon), [Test10255.hs:6:8-9]),
((Test10255.hs:6:11-26,AnnCloseP), [Test10255.hs:6:26]),
(AK Test10255.hs:4:1-17 AnnImport = [Test10255.hs:4:1-6]) ((Test10255.hs:6:11-26,AnnOpenP), [Test10255.hs:6:11]),
((Test10255.hs:6:12-18,AnnRarrow), [Test10255.hs:6:20-21]),
(AK Test10255.hs:4:1-17 AnnSemi = [Test10255.hs:6:1]) ((Test10255.hs:6:12-25,AnnRarrow), [Test10255.hs:6:20-21]),
((<no location info>,AnnEofPos), [Test10255.hs:8:1])
(AK Test10255.hs:(6,1)-(7,11) AnnEqual = [Test10255.hs:6:29])
(AK Test10255.hs:(6,1)-(7,11) AnnFunId = [Test10255.hs:6:1-3])
(AK Test10255.hs:(6,1)-(7,11) AnnSemi = [Test10255.hs:8:1])
(AK Test10255.hs:6:5-27 AnnCloseP = [Test10255.hs:6:27])
(AK Test10255.hs:6:5-27 AnnOpenP = [Test10255.hs:6:5])
(AK Test10255.hs:6:6-26 AnnDcolon = [Test10255.hs:6:8-9])
(AK Test10255.hs:6:11-26 AnnCloseP = [Test10255.hs:6:26])
(AK Test10255.hs:6:11-26 AnnOpenP = [Test10255.hs:6:11])
(AK Test10255.hs:6:12-18 AnnRarrow = [Test10255.hs:6:20-21])
(AK Test10255.hs:6:12-25 AnnRarrow = [Test10255.hs:6:20-21])
(AK <no location info> AnnEofPos = [Test10255.hs:8:1])
] ]
---Problems--------------------- ---Problems (should be empty list)---
[
]
---Problems'--------------------
[] []
-------------------------------- ---Annotations-----------------------
-- SrcSpan the annotation is attached to, AnnKeywordId,
-- list of locations the keyword item appears in
[ [
(AK Test10268.hs:1:1 AnnModule = [Test10268.hs:3:1-6]) ((Test10268.hs:1:1,AnnModule), [Test10268.hs:3:1-6]),
((Test10268.hs:1:1,AnnWhere), [Test10268.hs:3:18-22]),
(AK Test10268.hs:1:1 AnnWhere = [Test10268.hs:3:18-22]) ((Test10268.hs:5:1-17,AnnEqual), [Test10268.hs:5:4]),
((Test10268.hs:5:1-17,AnnFunId), [Test10268.hs:5:1-2]),
(AK Test10268.hs:5:1-17 AnnEqual = [Test10268.hs:5:4]) ((Test10268.hs:5:1-17,AnnSemi), [Test10268.hs:7:1]),
((Test10268.hs:5:6-17,AnnThIdSplice), [Test10268.hs:5:6-17]),
(AK Test10268.hs:5:1-17 AnnFunId = [Test10268.hs:5:1-2]) ((Test10268.hs:7:1-27,AnnDcolon), [Test10268.hs:7:6-7]),
((Test10268.hs:7:1-27,AnnSemi), [Test10268.hs:8:1]),
(AK Test10268.hs:5:1-17 AnnSemi = [Test10268.hs:7:1]) ((Test10268.hs:7:9-27,AnnRarrow), [Test10268.hs:7:11-12]),
((Test10268.hs:7:22-25,AnnCloseS), [Test10268.hs:7:25]),
(AK Test10268.hs:5:6-17 AnnThIdSplice = [Test10268.hs:5:6-17]) ((Test10268.hs:7:22-25,AnnOpenS), [Test10268.hs:7:23]),
((Test10268.hs:7:22-25,AnnSimpleQuote), [Test10268.hs:7:22]),
(AK Test10268.hs:7:1-27 AnnDcolon = [Test10268.hs:7:6-7]) ((Test10268.hs:8:1-16,AnnEqual), [Test10268.hs:8:6]),
((Test10268.hs:8:1-16,AnnFunId), [Test10268.hs:8:1-4]),
(AK Test10268.hs:7:1-27 AnnSemi = [Test10268.hs:8:1]) ((Test10268.hs:8:1-16,AnnSemi), [Test10268.hs:10:1]),
((Test10268.hs:10:1-22,AnnDcolon), [Test10268.hs:10:7-8]),
(AK Test10268.hs:7:9-27 AnnRarrow = [Test10268.hs:7:11-12]) ((Test10268.hs:10:1-22,AnnSemi), [Test10268.hs:11:1]),
((Test10268.hs:10:18-20,AnnCloseS), [Test10268.hs:10:20]),
(AK Test10268.hs:7:22-25 AnnCloseS = [Test10268.hs:7:25]) ((Test10268.hs:10:18-20,AnnOpenS), [Test10268.hs:10:19]),
((Test10268.hs:10:18-20,AnnSimpleQuote), [Test10268.hs:10:18]),
(AK Test10268.hs:7:22-25 AnnOpenS = [Test10268.hs:7:23]) ((Test10268.hs:11:1-17,AnnEqual), [Test10268.hs:11:7]),
((Test10268.hs:11:1-17,AnnFunId), [Test10268.hs:11:1-5]),
(AK Test10268.hs:7:22-25 AnnSimpleQuote = [Test10268.hs:7:22]) ((Test10268.hs:11:1-17,AnnSemi), [Test10268.hs:12:1]),
((<no location info>,AnnEofPos), [Test10268.hs:12:1])
(AK Test10268.hs:8:1-16 AnnEqual = [Test10268.hs:8:6])
(AK Test10268.hs:8:1-16 AnnFunId = [Test10268.hs:8:1-4])
(AK Test10268.hs:8:1-16 AnnSemi = [Test10268.hs:10:1])
(AK Test10268.hs:10:1-22 AnnDcolon = [Test10268.hs:10:7-8])
(AK Test10268.hs:10:1-22 AnnSemi = [Test10268.hs:11:1])
(AK Test10268.hs:10:18-20 AnnCloseS = [Test10268.hs:10:20])
(AK Test10268.hs:10:18-20 AnnOpenS = [Test10268.hs:10:19])
(AK Test10268.hs:10:18-20 AnnSimpleQuote = [Test10268.hs:10:18])
(AK Test10268.hs:11:1-17 AnnEqual = [Test10268.hs:11:7])
(AK Test10268.hs:11:1-17 AnnFunId = [Test10268.hs:11:1-5])
(AK Test10268.hs:11:1-17 AnnSemi = [Test10268.hs:12:1])
(AK <no location info> AnnEofPos = [Test10268.hs:12:1])
] ]
---Problems--------------------- ---Problems (should be empty list)---
[(AnnVal, Test10269.hs:4:4-6)]
---Annotations-----------------------
-- SrcSpan the annotation is attached to, AnnKeywordId,
-- list of locations the keyword item appears in
[ [
(AK Test10269.hs:4:1-9 AnnCloseP = [Test10269.hs:4:9]) ((Test10269.hs:1:1,AnnModule), [Test10269.hs:1:1-6]),
((Test10269.hs:1:1,AnnWhere), [Test10269.hs:1:18-22]),
(AK Test10269.hs:4:1-9 AnnOpenP = [Test10269.hs:4:1]) ((Test10269.hs:4:1-9,AnnCloseP), [Test10269.hs:4:9]),
((Test10269.hs:4:1-9,AnnOpenP), [Test10269.hs:4:1]),
(AK Test10269.hs:4:2-8 AnnVal = [Test10269.hs:4:4-6]) ((Test10269.hs:4:1-26,AnnCloseP), [Test10269.hs:4:9]),
((Test10269.hs:4:1-26,AnnEqual), [Test10269.hs:4:16]),
(AK <no location info> AnnEofPos = [Test10269.hs:5:1]) ((Test10269.hs:4:1-26,AnnFunId), [Test10269.hs:4:4-6]),
] ((Test10269.hs:4:1-26,AnnOpenP), [Test10269.hs:4:1]),
((Test10269.hs:4:1-26,AnnSemi), [Test10269.hs:5:1]),
---Problems'-------------------- ((Test10269.hs:4:2-8,AnnVal), [Test10269.hs:4:4-6]),
[(AnnVal, Test10269.hs:4:4-6), (AnnEofPos, Test10269.hs:5:1)] ((<no location info>,AnnEofPos), [Test10269.hs:5:1])
--------------------------------
[
(AK Test10269.hs:1:1 AnnModule = [Test10269.hs:1:1-6])
(AK Test10269.hs:1:1 AnnWhere = [Test10269.hs:1:18-22])
(AK Test10269.hs:4:1-9 AnnCloseP = [Test10269.hs:4:9])
(AK Test10269.hs:4:1-9 AnnOpenP = [Test10269.hs:4:1])
(AK Test10269.hs:4:1-26 AnnCloseP = [Test10269.hs:4:9])
(AK Test10269.hs:4:1-26 AnnEqual = [Test10269.hs:4:16])
(AK Test10269.hs:4:1-26 AnnFunId = [Test10269.hs:4:4-6])
(AK Test10269.hs:4:1-26 AnnOpenP = [Test10269.hs:4:1])
(AK Test10269.hs:4:1-26 AnnSemi = [Test10269.hs:5:1])
(AK Test10269.hs:4:2-8 AnnVal = [Test10269.hs:4:4-6])
(AK <no location info> AnnEofPos = [Test10269.hs:5:1])
] ]
---Problems--------------------- ---Problems (should be empty list)---
[
]
---Problems'--------------------
[] []
-------------------------------- ---Annotations-----------------------
-- SrcSpan the annotation is attached to, AnnKeywordId,
-- list of locations the keyword item appears in
[ [
(AK Test10278.hs:1:1 AnnModule = [Test10278.hs:2:1-6]) ((Test10278.hs:1:1,AnnModule), [Test10278.hs:2:1-6]),
((Test10278.hs:1:1,AnnWhere), [Test10278.hs:2:18-22]),
(AK Test10278.hs:1:1 AnnWhere = [Test10278.hs:2:18-22]) ((Test10278.hs:4:1-61,AnnDcolon), [Test10278.hs:4:16-17]),
((Test10278.hs:4:1-61,AnnSemi), [Test10278.hs:5:1]),
(AK Test10278.hs:4:1-61 AnnDcolon = [Test10278.hs:4:16-17]) ((Test10278.hs:4:19-61,AnnDot), [Test10278.hs:4:29]),
((Test10278.hs:4:19-61,AnnForall), [Test10278.hs:4:19-24]),
(AK Test10278.hs:4:1-61 AnnSemi = [Test10278.hs:5:1]) ((Test10278.hs:4:31-61,AnnDot), [Test10278.hs:4:42]),
((Test10278.hs:4:31-61,AnnForall), [Test10278.hs:4:31-36]),
(AK Test10278.hs:4:19-61 AnnDot = [Test10278.hs:4:29]) ((Test10278.hs:4:44-61,AnnRarrow), [Test10278.hs:4:48-49]),
((Test10278.hs:4:51-61,AnnRarrow), [Test10278.hs:4:56-57]),
(AK Test10278.hs:4:19-61 AnnForall = [Test10278.hs:4:19-24]) ((Test10278.hs:5:1-26,AnnEqual), [Test10278.hs:5:16]),
((Test10278.hs:5:1-26,AnnFunId), [Test10278.hs:5:1-14]),
(AK Test10278.hs:4:31-61 AnnDot = [Test10278.hs:4:42]) ((Test10278.hs:5:1-26,AnnSemi), [Test10278.hs:7:1]),
((Test10278.hs:(7,1)-(11,33),AnnDcolon), [Test10278.hs:7:17-18]),
(AK Test10278.hs:4:31-61 AnnForall = [Test10278.hs:4:31-36]) ((Test10278.hs:(7,1)-(11,33),AnnSemi), [Test10278.hs:12:1]),
((Test10278.hs:7:20-39,AnnCloseP), [Test10278.hs:7:39, Test10278.hs:7:39]),
(AK Test10278.hs:4:44-61 AnnRarrow = [Test10278.hs:4:48-49]) ((Test10278.hs:7:20-39,AnnDarrow), [Test10278.hs:7:41-42]),
((Test10278.hs:7:20-39,AnnOpenP), [Test10278.hs:7:20, Test10278.hs:7:20]),
(AK Test10278.hs:4:51-61 AnnRarrow = [Test10278.hs:4:56-57]) ((Test10278.hs:7:21-24,AnnComma), [Test10278.hs:7:25]),
((Test10278.hs:(8,19)-(10,58),AnnCloseP), [Test10278.hs:10:58]),
(AK Test10278.hs:5:1-26 AnnEqual = [Test10278.hs:5:16]) ((Test10278.hs:(8,19)-(10,58),AnnOpenP), [Test10278.hs:8:19]),
((Test10278.hs:(8,19)-(11,33),AnnRarrow), [Test10278.hs:11:23-24]),
(AK Test10278.hs:5:1-26 AnnFunId = [Test10278.hs:5:1-14]) ((Test10278.hs:(8,20)-(10,57),AnnDot), [Test10278.hs:8:30]),
((Test10278.hs:(8,20)-(10,57),AnnForall), [Test10278.hs:8:20-25]),
(AK Test10278.hs:5:1-26 AnnSemi = [Test10278.hs:7:1]) ((Test10278.hs:(8,32)-(10,57),AnnDot), [Test10278.hs:8:43]),
((Test10278.hs:(8,32)-(10,57),AnnForall), [Test10278.hs:8:32-37]),
(AK Test10278.hs:(7,1)-(11,33) AnnDcolon = [Test10278.hs:7:17-18]) ((Test10278.hs:9:27-50,AnnRarrow), [Test10278.hs:10:31-32]),
((Test10278.hs:(9,27)-(10,57),AnnRarrow), [Test10278.hs:10:31-32]),
(AK Test10278.hs:(7,1)-(11,33) AnnSemi = [Test10278.hs:12:1]) ((Test10278.hs:9:38-50,AnnCloseP), [Test10278.hs:9:50]),
((Test10278.hs:9:38-50,AnnOpenP), [Test10278.hs:9:38]),
(AK Test10278.hs:7:20-39 AnnCloseP = [Test10278.hs:7:39, Test10278.hs:7:39]) ((Test10278.hs:10:45-57,AnnCloseP), [Test10278.hs:10:57]),
((Test10278.hs:10:45-57,AnnOpenP), [Test10278.hs:10:45]),
(AK Test10278.hs:7:20-39 AnnDarrow = [Test10278.hs:7:41-42]) ((Test10278.hs:11:26-33,AnnRarrow), [Test10278.hs:11:28-29]),
((Test10278.hs:11:31-33,AnnCloseS), [Test10278.hs:11:33]),
(AK Test10278.hs:7:20-39 AnnOpenP = [Test10278.hs:7:20, Test10278.hs:7:20]) ((Test10278.hs:11:31-33,AnnOpenS), [Test10278.hs:11:31]),
((Test10278.hs:12:1-47,AnnEqual), [Test10278.hs:12:22]),
(AK Test10278.hs:7:21-24 AnnComma = [Test10278.hs:7:25]) ((Test10278.hs:12:1-47,AnnFunId), [Test10278.hs:12:1-15]),
((Test10278.hs:12:1-47,AnnSemi), [Test10278.hs:14:1]),
(AK Test10278.hs:(8,19)-(10,58) AnnCloseP = [Test10278.hs:10:58]) ((Test10278.hs:12:35-44,AnnCloseP), [Test10278.hs:12:44]),
((Test10278.hs:12:35-44,AnnOpenP), [Test10278.hs:12:35]),
(AK Test10278.hs:(8,19)-(10,58) AnnOpenP = [Test10278.hs:8:19]) ((Test10278.hs:(14,1)-(17,80),AnnData), [Test10278.hs:14:1-4]),
((Test10278.hs:(14,1)-(17,80),AnnSemi), [Test10278.hs:21:1]),
(AK Test10278.hs:(8,19)-(11,33) AnnRarrow = [Test10278.hs:11:23-24]) ((Test10278.hs:(14,1)-(17,80),AnnWhere), [Test10278.hs:14:21-25]),
((Test10278.hs:15:5-64,AnnDcolon), [Test10278.hs:15:11-12]),
(AK Test10278.hs:(8,20)-(10,57) AnnDot = [Test10278.hs:8:30]) ((Test10278.hs:15:5-64,AnnSemi), [Test10278.hs:16:5]),
((Test10278.hs:15:14-64,AnnDot), [Test10278.hs:15:23]),
(AK Test10278.hs:(8,20)-(10,57) AnnForall = [Test10278.hs:8:20-25]) ((Test10278.hs:15:14-64,AnnForall), [Test10278.hs:15:14-19]),
((Test10278.hs:15:25-40,AnnCloseP), [Test10278.hs:15:40, Test10278.hs:15:40]),
(AK Test10278.hs:(8,32)-(10,57) AnnDot = [Test10278.hs:8:43]) ((Test10278.hs:15:25-40,AnnDarrow), [Test10278.hs:15:42-43]),
((Test10278.hs:15:25-40,AnnOpenP), [Test10278.hs:15:25, Test10278.hs:15:25]),
(AK Test10278.hs:(8,32)-(10,57) AnnForall = [Test10278.hs:8:32-37]) ((Test10278.hs:15:27-30,AnnComma), [Test10278.hs:15:31]),
((Test10278.hs:15:45-46,AnnBang), [Test10278.hs:15:45]),
(AK Test10278.hs:9:27-50 AnnRarrow = [Test10278.hs:10:31-32]) ((Test10278.hs:15:45-46,AnnRarrow), [Test10278.hs:15:48-49]),
((Test10278.hs:15:45-64,AnnRarrow), [Test10278.hs:15:48-49]),
(AK Test10278.hs:(9,27)-(10,57) AnnRarrow = [Test10278.hs:10:31-32]) ((Test10278.hs:16:5-64,AnnDcolon), [Test10278.hs:16:11-12]),
((Test10278.hs:16:5-64,AnnSemi), [Test10278.hs:17:5]),
(AK Test10278.hs:9:38-50 AnnCloseP = [Test10278.hs:9:50]) ((Test10278.hs:16:14-64,AnnDot), [Test10278.hs:16:23]),
((Test10278.hs:16:14-64,AnnForall), [Test10278.hs:16:14-19]),
(AK Test10278.hs:9:38-50 AnnOpenP = [Test10278.hs:9:38]) ((Test10278.hs:16:25-40,AnnCloseP), [Test10278.hs:16:40, Test10278.hs:16:40]),
((Test10278.hs:16:25-40,AnnDarrow), [Test10278.hs:16:42-43]),
(AK Test10278.hs:10:45-57 AnnCloseP = [Test10278.hs:10:57]) ((Test10278.hs:16:25-40,AnnOpenP), [Test10278.hs:16:25, Test10278.hs:16:25]),
((Test10278.hs:16:27-30,AnnComma), [Test10278.hs:16:31]),
(AK Test10278.hs:10:45-57 AnnOpenP = [Test10278.hs:10:45]) ((Test10278.hs:16:45-46,AnnBang), [Test10278.hs:16:45]),
((Test10278.hs:16:45-46,AnnRarrow), [Test10278.hs:16:48-49]),
(AK Test10278.hs:11:26-33 AnnRarrow = [Test10278.hs:11:28-29]) ((Test10278.hs:16:45-64,AnnRarrow), [Test10278.hs:16:48-49]),
((Test10278.hs:17:5-80,AnnDcolon), [Test10278.hs:17:12-13]),
(AK Test10278.hs:11:31-33 AnnCloseS = [Test10278.hs:11:33]) ((Test10278.hs:17:15-20,AnnCloseP), [Test10278.hs:17:20]),
((Test10278.hs:17:15-20,AnnDarrow), [Test10278.hs:17:22-23]),
(AK Test10278.hs:11:31-33 AnnOpenS = [Test10278.hs:11:31]) ((Test10278.hs:17:15-20,AnnOpenP), [Test10278.hs:17:15]),
((Test10278.hs:17:25-80,AnnDot), [Test10278.hs:17:34]),
(AK Test10278.hs:12:1-47 AnnEqual = [Test10278.hs:12:22]) ((Test10278.hs:17:25-80,AnnForall), [Test10278.hs:17:25-30]),
((Test10278.hs:17:36-51,AnnCloseP), [Test10278.hs:17:51, Test10278.hs:17:51]),
(AK Test10278.hs:12:1-47 AnnFunId = [Test10278.hs:12:1-15]) ((Test10278.hs:17:36-51,AnnDarrow), [Test10278.hs:17:53-54]),
((Test10278.hs:17:36-51,AnnOpenP), [Test10278.hs:17:36, Test10278.hs:17:36]),
(AK Test10278.hs:12:1-47 AnnSemi = [Test10278.hs:14:1]) ((Test10278.hs:17:38-41,AnnComma), [Test10278.hs:17:42]),
((Test10278.hs:17:56-57,AnnBang), [Test10278.hs:17:56]),
(AK Test10278.hs:12:35-44 AnnCloseP = [Test10278.hs:12:44]) ((Test10278.hs:17:56-57,AnnRarrow), [Test10278.hs:17:59-60]),
((Test10278.hs:17:56-80,AnnRarrow), [Test10278.hs:17:59-60]),
(AK Test10278.hs:12:35-44 AnnOpenP = [Test10278.hs:12:35]) ((Test10278.hs:17:62,AnnRarrow), [Test10278.hs:17:64-65]),
((Test10278.hs:17:62-80,AnnRarrow), [Test10278.hs:17:64-65]),
(AK Test10278.hs:(14,1)-(17,80) AnnData = [Test10278.hs:14:1-4]) ((<no location info>,AnnEofPos), [Test10278.hs:21:1])
(AK Test10278.hs:(14,1)-(17,80) AnnSemi = [Test10278.hs:21:1])
(AK Test10278.hs:(14,1)-(17,80) AnnWhere = [Test10278.hs:14:21-25])
(AK Test10278.hs:15:5-64 AnnDcolon = [Test10278.hs:15:11-12])
(AK Test10278.hs:15:5-64 AnnSemi = [Test10278.hs:16:5])
(AK Test10278.hs:15:14-64 AnnDot = [Test10278.hs:15:23])
(AK Test10278.hs:15:14-64 AnnForall = [Test10278.hs:15:14-19])
(AK Test10278.hs:15:25-40 AnnCloseP = [Test10278.hs:15:40, Test10278.hs:15:40])
(AK Test10278.hs:15:25-40 AnnDarrow = [Test10278.hs:15:42-43])
(AK Test10278.hs:15:25-40 AnnOpenP = [Test10278.hs:15:25, Test10278.hs:15:25])
(AK Test10278.hs:15:27-30 AnnComma = [Test10278.hs:15:31])
(AK Test10278.hs:15:45-46 AnnBang = [Test10278.hs:15:45])
(AK Test10278.hs:15:45-46 AnnRarrow = [Test10278.hs:15:48-49])
(AK Test10278.hs:15:45-64 AnnRarrow = [Test10278.hs:15:48-49])
(AK Test10278.hs:16:5-64 AnnDcolon = [Test10278.hs:16:11-12])
(AK Test10278.hs:16:5-64 AnnSemi = [Test10278.hs:17:5])
(AK Test10278.hs:16:14-64 AnnDot = [Test10278.hs:16:23])
(AK Test10278.hs:16:14-64 AnnForall = [Test10278.hs:16:14-19])
(AK Test10278.hs:16:25-40 AnnCloseP = [Test10278.hs:16:40, Test10278.hs:16:40])
(AK Test10278.hs:16:25-40 AnnDarrow = [Test10278.hs:16:42-43])
(AK Test10278.hs:16:25-40 AnnOpenP = [Test10278.hs:16:25, Test10278.hs:16:25])
(AK Test10278.hs:16:27-30 AnnComma = [Test10278.hs:16:31])
(AK Test10278.hs:16:45-46 AnnBang = [Test10278.hs:16:45])
(AK Test10278.hs:16:45-46 AnnRarrow = [Test10278.hs:16:48-49])
(AK Test10278.hs:16:45-64 AnnRarrow = [Test10278.hs:16:48-49])
(AK Test10278.hs:17:5-80 AnnDcolon = [Test10278.hs:17:12-13])
(AK Test10278.hs:17:15-20 AnnCloseP = [Test10278.hs:17:20])
(AK Test10278.hs:17:15-20 AnnDarrow = [Test10278.hs:17:22-23])
(AK Test10278.hs:17:15-20 AnnOpenP = [Test10278.hs:17:15])
(AK Test10278.hs:17:25-80 AnnDot = [Test10278.hs:17:34])
(AK Test10278.hs:17:25-80 AnnForall = [Test10278.hs:17:25-30])
(AK Test10278.hs:17:36-51 AnnCloseP = [Test10278.hs:17:51, Test10278.hs:17:51])
(AK Test10278.hs:17:36-51 AnnDarrow = [Test10278.hs:17:53-54])
(AK Test10278.hs:17:36-51 AnnOpenP = [Test10278.hs:17:36, Test10278.hs:17:36])
(AK Test10278.hs:17:38-41 AnnComma = [Test10278.hs:17:42])
(AK Test10278.hs:17:56-57 AnnBang = [Test10278.hs:17:56])
(AK Test10278.hs:17:56-57 AnnRarrow = [Test10278.hs:17:59-60])
(AK Test10278.hs:17:56-80 AnnRarrow = [Test10278.hs:17:59-60])
(AK Test10278.hs:17:62 AnnRarrow = [Test10278.hs:17:64-65])
(AK Test10278.hs:17:62-80 AnnRarrow = [Test10278.hs:17:64-65])
(AK <no location info> AnnEofPos = [Test10278.hs:21:1])
] ]
---Problems--------------------- ---Problems (should be empty list)---
[]
---Annotations-----------------------
-- SrcSpan the annotation is attached to, AnnKeywordId,
-- list of locations the keyword item appears in
[ [
(AK <no location info> AnnEofPos = [Test10280.hs:5:1]) ((Test10280.hs:1:1,AnnModule), [Test10280.hs:2:1-6]),
] ((Test10280.hs:1:1,AnnWhere), [Test10280.hs:2:18-22]),
((Test10280.hs:4:1-45,AnnEqual), [Test10280.hs:4:6]),
---Problems'-------------------- ((Test10280.hs:4:1-45,AnnFunId), [Test10280.hs:4:1-4]),
[(AnnEofPos, Test10280.hs:5:1)] ((Test10280.hs:4:1-45,AnnSemi), [Test10280.hs:5:1]),
-------------------------------- ((Test10280.hs:4:35-45,AnnCloseP), [Test10280.hs:4:45]),
[ ((Test10280.hs:4:35-45,AnnOpenP), [Test10280.hs:4:35]),
(AK Test10280.hs:1:1 AnnModule = [Test10280.hs:2:1-6]) ((Test10280.hs:4:36-40,AnnCloseP), [Test10280.hs:4:40]),
((Test10280.hs:4:36-40,AnnOpenP), [Test10280.hs:4:36]),
(AK Test10280.hs:1:1 AnnWhere = [Test10280.hs:2:18-22]) ((Test10280.hs:4:36-44,AnnVal), [Test10280.hs:4:42]),
((Test10280.hs:4:37,AnnComma), [Test10280.hs:4:37]),
(AK Test10280.hs:4:1-45 AnnEqual = [Test10280.hs:4:6]) ((Test10280.hs:4:38-39,AnnCloseP), [Test10280.hs:4:39]),
((Test10280.hs:4:38-39,AnnOpenP), [Test10280.hs:4:38]),
(AK Test10280.hs:4:1-45 AnnFunId = [Test10280.hs:4:1-4]) ((<no location info>,AnnEofPos), [Test10280.hs:5:1])
(AK Test10280.hs:4:1-45 AnnSemi = [Test10280.hs:5:1])
(AK Test10280.hs:4:35-45 AnnCloseP = [Test10280.hs:4:45])
(AK Test10280.hs:4:35-45 AnnOpenP = [Test10280.hs:4:35])
(AK Test10280.hs:4:36-40 AnnCloseP = [Test10280.hs:4:40])
(AK Test10280.hs:4:36-40 AnnOpenP = [Test10280.hs:4:36])
(AK Test10280.hs:4:36-44 AnnVal = [Test10280.hs:4:42])
(AK Test10280.hs:4:37 AnnComma = [Test10280.hs:4:37])
(AK Test10280.hs:4:38-39 AnnCloseP = [Test10280.hs:4:39])
(AK Test10280.hs:4:38-39 AnnOpenP = [Test10280.hs:4:38])
(AK <no location info> AnnEofPos = [Test10280.hs:5:1])
] ]
---Problems--------------------- ---Problems (should be empty list)---
[
(AK Test10307.hs:6:8-34 AnnEqual = [Test10307.hs:6:31])
]
---Problems'--------------------
[] []
-------------------------------- ---Annotations-----------------------
-- SrcSpan the annotation is attached to, AnnKeywordId,
-- list of locations the keyword item appears in
[ [
(AK Test10307.hs:1:1 AnnModule = [Test10307.hs:2:1-6]) ((Test10307.hs:1:1,AnnModule), [Test10307.hs:2:1-6]),
((Test10307.hs:1:1,AnnWhere), [Test10307.hs:2:18-22]),
(AK Test10307.hs:1:1 AnnWhere = [Test10307.hs:2:18-22]) ((Test10307.hs:(4,1)-(6,34),AnnClass), [Test10307.hs:4:1-5]),
((Test10307.hs:(4,1)-(6,34),AnnSemi), [Test10307.hs:7:1]),
(AK Test10307.hs:(4,1)-(6,34) AnnClass = [Test10307.hs:4:1-5]) ((Test10307.hs:(4,1)-(6,34),AnnWhere), [Test10307.hs:4:18-22]),
((Test10307.hs:5:3-34,AnnDcolon), [Test10307.hs:5:31-32]),
(AK Test10307.hs:(4,1)-(6,34) AnnSemi = [Test10307.hs:7:1]) ((Test10307.hs:5:3-34,AnnSemi), [Test10307.hs:6:3]),
((Test10307.hs:5:3-34,AnnType), [Test10307.hs:5:3-6]),
(AK Test10307.hs:(4,1)-(6,34) AnnWhere = [Test10307.hs:4:18-22]) ((Test10307.hs:6:3-34,AnnEqual), [Test10307.hs:6:31]),
((Test10307.hs:6:3-34,AnnType), [Test10307.hs:6:3-6]),
(AK Test10307.hs:5:3-34 AnnDcolon = [Test10307.hs:5:31-32]) ((Test10307.hs:6:8-34,AnnEqual), [Test10307.hs:6:31]),
((Test10307.hs:6:33-34,AnnCloseP), [Test10307.hs:6:34]),
(AK Test10307.hs:5:3-34 AnnSemi = [Test10307.hs:6:3]) ((Test10307.hs:6:33-34,AnnOpenP), [Test10307.hs:6:33]),
((<no location info>,AnnEofPos), [Test10307.hs:7:1])
(AK Test10307.hs:5:3-34 AnnType = [Test10307.hs:5:3-6])
(AK Test10307.hs:6:3-34 AnnEqual = [Test10307.hs:6:31])
(AK Test10307.hs:6:3-34 AnnType = [Test10307.hs:6:3-6])
(AK Test10307.hs:6:8-34 AnnEqual = [Test10307.hs:6:31])
(AK Test10307.hs:6:33-34 AnnCloseP = [Test10307.hs:6:34])
(AK Test10307.hs:6:33-34 AnnOpenP = [Test10307.hs:6:33])
(AK <no location info> AnnEofPos = [Test10307.hs:7:1])
] ]
---Problems--------------------- ---Problems (should be empty list)---
[
(AK Test10309.hs:(5,20)-(6,34) AnnRarrow = [Test10309.hs:6:22-23])
]
---Problems'--------------------
[] []
-------------------------------- ---Annotations-----------------------
-- SrcSpan the annotation is attached to, AnnKeywordId,
-- list of locations the keyword item appears in
[ [
(AK Test10309.hs:1:1 AnnModule = [Test10309.hs:2:1-6]) ((Test10309.hs:1:1,AnnModule), [Test10309.hs:2:1-6]),
((Test10309.hs:1:1,AnnWhere), [Test10309.hs:2:18-22]),
(AK Test10309.hs:1:1 AnnWhere = [Test10309.hs:2:18-22]) ((Test10309.hs:(4,1)-(6,34),AnnData), [Test10309.hs:4:1-4]),
((Test10309.hs:(4,1)-(6,34),AnnSemi), [Test10309.hs:7:1]),
(AK Test10309.hs:(4,1)-(6,34) AnnData = [Test10309.hs:4:1-4]) ((Test10309.hs:(4,1)-(6,34),AnnWhere), [Test10309.hs:4:13-17]),
((Test10309.hs:(5,3)-(6,34),AnnDcolon), [Test10309.hs:5:6-7]),
(AK Test10309.hs:(4,1)-(6,34) AnnSemi = [Test10309.hs:7:1]) ((Test10309.hs:5:9-15,AnnCloseP), [Test10309.hs:5:15]),
((Test10309.hs:5:9-15,AnnDarrow), [Test10309.hs:5:17-18]),
(AK Test10309.hs:(4,1)-(6,34) AnnWhere = [Test10309.hs:4:13-17]) ((Test10309.hs:5:9-15,AnnOpenP), [Test10309.hs:5:9]),