Commit fe95463b authored by Alan Zimmerman's avatar Alan Zimmerman

ApiAnnotations: Add SourceText for unicode tokens

Summary:
At the moment there is no way to tell if a given token used its unicode
variant or its normal one, except to look at the length of the token.

This fails for the unicode '*'.

Expose the original source text for unicode variants so that API
Annotations can capture them specifically.

Test Plan: ./validate

Reviewers: mpickering, austin, bgamari

Reviewed By: bgamari

Subscribers: thomie

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

GHC Trac Issues: #11018
parent 46a03fbe
...@@ -7,6 +7,8 @@ module ApiAnnotation ( ...@@ -7,6 +7,8 @@ module ApiAnnotation (
ApiAnnKey, ApiAnnKey,
AnnKeywordId(..), AnnKeywordId(..),
AnnotationComment(..), AnnotationComment(..),
IsUnicodeSyntax(..),
unicodeAnn,
LRdrName -- Exists for haddocks only LRdrName -- Exists for haddocks only
) where ) where
...@@ -198,8 +200,10 @@ data AnnKeywordId ...@@ -198,8 +200,10 @@ data AnnKeywordId
| AnnComma -- ^ as a list separator | AnnComma -- ^ as a list separator
| AnnCommaTuple -- ^ in a RdrName for a tuple | AnnCommaTuple -- ^ in a RdrName for a tuple
| AnnDarrow -- ^ '=>' | AnnDarrow -- ^ '=>'
| AnnDarrowU -- ^ '=>', unicode variant
| AnnData | AnnData
| AnnDcolon -- ^ '::' | AnnDcolon -- ^ '::'
| AnnDcolonU -- ^ '::', unicode variant
| AnnDefault | AnnDefault
| AnnDeriving | AnnDeriving
| AnnDo | AnnDo
...@@ -210,6 +214,7 @@ data AnnKeywordId ...@@ -210,6 +214,7 @@ data AnnKeywordId
| AnnExport | AnnExport
| AnnFamily | AnnFamily
| AnnForall | AnnForall
| AnnForallU -- ^ Unicode variant
| AnnForeign | AnnForeign
| AnnFunId -- ^ for function name in matches where there are | AnnFunId -- ^ for function name in matches where there are
-- multiple equations for the function. -- multiple equations for the function.
...@@ -223,6 +228,7 @@ data AnnKeywordId ...@@ -223,6 +228,7 @@ data AnnKeywordId
| AnnInstance | AnnInstance
| AnnLam | AnnLam
| AnnLarrow -- ^ '<-' | AnnLarrow -- ^ '<-'
| AnnLarrowU -- ^ '<-', unicode variant
| AnnLet | AnnLet
| AnnMdo | AnnMdo
| AnnMinus -- ^ '-' | AnnMinus -- ^ '-'
...@@ -241,9 +247,12 @@ data AnnKeywordId ...@@ -241,9 +247,12 @@ data AnnKeywordId
| AnnProc | AnnProc
| AnnQualified | AnnQualified
| AnnRarrow -- ^ '->' | AnnRarrow -- ^ '->'
| AnnRarrowU -- ^ '->', unicode variant
| AnnRec | AnnRec
| AnnRole | AnnRole
| AnnSafe | AnnSafe
| AnnStar -- ^ '*'
| AnnStarU -- ^ '*', unicode variant.
| AnnSemi -- ^ ';' | AnnSemi -- ^ ';'
| AnnSimpleQuote -- ^ ''' | AnnSimpleQuote -- ^ '''
| AnnStatic -- ^ 'static' | AnnStatic -- ^ 'static'
...@@ -261,11 +270,15 @@ data AnnKeywordId ...@@ -261,11 +270,15 @@ data AnnKeywordId
| AnnVbar -- ^ '|' | AnnVbar -- ^ '|'
| AnnWhere | AnnWhere
| Annlarrowtail -- ^ '-<' | Annlarrowtail -- ^ '-<'
| AnnlarrowtailU -- ^ '-<', unicode variant
| Annrarrowtail -- ^ '->' | Annrarrowtail -- ^ '->'
| AnnrarrowtailU -- ^ '->', unicode variant
| AnnLarrowtail -- ^ '-<<' | AnnLarrowtail -- ^ '-<<'
| AnnLarrowtailU -- ^ '-<<', unicode variant
| AnnRarrowtail -- ^ '>>-' | AnnRarrowtail -- ^ '>>-'
| AnnRarrowtailU -- ^ '>>-', unicode variant
| AnnEofPos | AnnEofPos
deriving (Eq,Ord,Data,Typeable,Show) deriving (Eq, Ord, Data, Typeable, Show)
instance Outputable AnnKeywordId where instance Outputable AnnKeywordId where
ppr x = text (show x) ppr x = text (show x)
...@@ -282,7 +295,7 @@ data AnnotationComment = ...@@ -282,7 +295,7 @@ data AnnotationComment =
| AnnDocOptionsOld String -- ^ doc options declared "-- # ..."-style | AnnDocOptionsOld String -- ^ doc options declared "-- # ..."-style
| AnnLineComment String -- ^ comment starting by "--" | AnnLineComment String -- ^ comment starting by "--"
| AnnBlockComment String -- ^ comment in {- -} | AnnBlockComment String -- ^ comment in {- -}
deriving (Eq,Ord,Data,Typeable,Show) deriving (Eq, Ord, Data, Typeable, Show)
-- Note: these are based on the Token versions, but the Token type is -- Note: these are based on the Token versions, but the Token type is
-- defined in Lexer.x and bringing it in here would create a loop -- defined in Lexer.x and bringing it in here would create a loop
...@@ -295,3 +308,26 @@ instance Outputable AnnotationComment where ...@@ -295,3 +308,26 @@ instance Outputable AnnotationComment where
-- 'ApiAnnotation.AnnTilde' -- 'ApiAnnotation.AnnTilde'
-- - May have 'ApiAnnotation.AnnComma' when in a list -- - May have 'ApiAnnotation.AnnComma' when in a list
type LRdrName = Located RdrName type LRdrName = Located RdrName
-- | Certain tokens can have alternate representations when unicode syntax is
-- enabled. This flag is attached to those tokens in the lexer so that the
-- original source representation can be reproduced in the corresponding
-- 'ApiAnnotation'
data IsUnicodeSyntax = UnicodeSyntax | NormalSyntax
deriving (Eq, Ord, Data, Typeable, Show)
-- | Convert a normal annotation into its unicode equivalent one
unicodeAnn :: AnnKeywordId -> AnnKeywordId
unicodeAnn AnnForall = AnnForallU
unicodeAnn AnnDcolon = AnnDcolonU
unicodeAnn AnnLarrow = AnnLarrowU
unicodeAnn AnnRarrow = AnnRarrowU
unicodeAnn AnnDarrow = AnnDarrowU
unicodeAnn Annlarrowtail = AnnLarrowtailU
unicodeAnn Annrarrowtail = AnnrarrowtailU
unicodeAnn AnnLarrowtail = AnnLarrowtailU
unicodeAnn AnnRarrowtail = AnnRarrowtailU
unicodeAnn AnnStar = AnnStarU
unicodeAnn ann = ann
-- What about '*'?
...@@ -535,7 +535,7 @@ data Token ...@@ -535,7 +535,7 @@ data Token
| ITtype | ITtype
| ITwhere | ITwhere
| ITforall -- GHC extension keywords | ITforall IsUnicodeSyntax -- GHC extension keywords
| ITexport | ITexport
| ITlabel | ITlabel
| ITdynamic | ITdynamic
...@@ -587,20 +587,20 @@ data Token ...@@ -587,20 +587,20 @@ data Token
| ITdotdot -- reserved symbols | ITdotdot -- reserved symbols
| ITcolon | ITcolon
| ITdcolon | ITdcolon IsUnicodeSyntax
| ITequal | ITequal
| ITlam | ITlam
| ITlcase | ITlcase
| ITvbar | ITvbar
| ITlarrow | ITlarrow IsUnicodeSyntax
| ITrarrow | ITrarrow IsUnicodeSyntax
| ITat | ITat
| ITtilde | ITtilde
| ITtildehsh | ITtildehsh
| ITdarrow | ITdarrow IsUnicodeSyntax
| ITminus | ITminus
| ITbang | ITbang
| ITstar | ITstar IsUnicodeSyntax
| ITdot | ITdot
| ITbiglam -- GHC-extension symbols | ITbiglam -- GHC-extension symbols
...@@ -671,15 +671,15 @@ data Token ...@@ -671,15 +671,15 @@ data Token
-- Arrow notation extension -- Arrow notation extension
| ITproc | ITproc
| ITrec | ITrec
| IToparenbar -- (| | IToparenbar -- (|
| ITcparenbar -- |) | ITcparenbar -- |)
| ITlarrowtail -- -< | ITlarrowtail IsUnicodeSyntax -- -<
| ITrarrowtail -- >- | ITrarrowtail IsUnicodeSyntax -- >-
| ITLarrowtail -- -<< | ITLarrowtail IsUnicodeSyntax -- -<<
| ITRarrowtail -- >>- | ITRarrowtail IsUnicodeSyntax -- >>-
| ITunknown String -- Used when the lexer can't make sense of it | ITunknown String -- Used when the lexer can't make sense of it
| ITeof -- end of file token | ITeof -- end of file token
-- Documentation annotations -- Documentation annotations
| ITdocCommentNext String -- something beginning '-- |' | ITdocCommentNext String -- something beginning '-- |'
...@@ -733,7 +733,8 @@ reservedWordsFM = listToUFM $ ...@@ -733,7 +733,8 @@ reservedWordsFM = listToUFM $
( "type", ITtype, 0 ), ( "type", ITtype, 0 ),
( "where", ITwhere, 0 ), ( "where", ITwhere, 0 ),
( "forall", ITforall, xbit ExplicitForallBit .|. ( "forall", ITforall NormalSyntax,
xbit ExplicitForallBit .|.
xbit InRulePragBit), xbit InRulePragBit),
( "mdo", ITmdo, xbit RecursiveDoBit), ( "mdo", ITmdo, xbit RecursiveDoBit),
-- See Note [Lexing type pseudo-keywords] -- See Note [Lexing type pseudo-keywords]
...@@ -784,44 +785,49 @@ a key detail to make all this work. ...@@ -784,44 +785,49 @@ a key detail to make all this work.
reservedSymsFM :: UniqFM (Token, ExtsBitmap -> Bool) reservedSymsFM :: UniqFM (Token, ExtsBitmap -> Bool)
reservedSymsFM = listToUFM $ reservedSymsFM = listToUFM $
map (\ (x,y,z) -> (mkFastString x,(y,z))) map (\ (x,y,z) -> (mkFastString x,(y,z)))
[ ("..", ITdotdot, always) [ ("..", ITdotdot, always)
-- (:) is a reserved op, meaning only list cons -- (:) is a reserved op, meaning only list cons
,(":", ITcolon, always) ,(":", ITcolon, always)
,("::", ITdcolon, always) ,("::", ITdcolon NormalSyntax, always)
,("=", ITequal, always) ,("=", ITequal, always)
,("\\", ITlam, always) ,("\\", ITlam, always)
,("|", ITvbar, always) ,("|", ITvbar, always)
,("<-", ITlarrow, always) ,("<-", ITlarrow NormalSyntax, always)
,("->", ITrarrow, always) ,("->", ITrarrow NormalSyntax, always)
,("@", ITat, always) ,("@", ITat, always)
,("~", ITtilde, always) ,("~", ITtilde, always)
,("~#", ITtildehsh, magicHashEnabled) ,("~#", ITtildehsh, magicHashEnabled)
,("=>", ITdarrow, always) ,("=>", ITdarrow NormalSyntax, always)
,("-", ITminus, always) ,("-", ITminus, always)
,("!", ITbang, always) ,("!", ITbang, always)
-- For data T (a::*) = MkT -- For data T (a::*) = MkT
,("*", ITstar, always) -- \i -> kindSigsEnabled i || tyFamEnabled i) ,("*", ITstar NormalSyntax, always)
-- \i -> kindSigsEnabled i || tyFamEnabled i)
-- For 'forall a . t' -- For 'forall a . t'
,(".", ITdot, always) -- \i -> explicitForallEnabled i || inRulePrag i) ,(".", ITdot, always) -- \i -> explicitForallEnabled i || inRulePrag i)
,("-<", ITlarrowtail, arrowsEnabled) ,("-<", ITlarrowtail NormalSyntax, arrowsEnabled)
,(">-", ITrarrowtail, arrowsEnabled) ,(">-", ITrarrowtail NormalSyntax, arrowsEnabled)
,("-<<", ITLarrowtail, arrowsEnabled) ,("-<<", ITLarrowtail NormalSyntax, arrowsEnabled)
,(">>-", ITRarrowtail, arrowsEnabled) ,(">>-", ITRarrowtail NormalSyntax, arrowsEnabled)
,("∷", ITdcolon, unicodeSyntaxEnabled) ,("∷", ITdcolon UnicodeSyntax, unicodeSyntaxEnabled)
,("⇒", ITdarrow, unicodeSyntaxEnabled) ,("⇒", ITdarrow UnicodeSyntax, unicodeSyntaxEnabled)
,("∀", ITforall, unicodeSyntaxEnabled) ,("∀", ITforall UnicodeSyntax, unicodeSyntaxEnabled)
,("→", ITrarrow, unicodeSyntaxEnabled) ,("→", ITrarrow UnicodeSyntax, unicodeSyntaxEnabled)
,("←", ITlarrow, unicodeSyntaxEnabled) ,("←", ITlarrow UnicodeSyntax, unicodeSyntaxEnabled)
,("⤙", ITlarrowtail, \i -> unicodeSyntaxEnabled i && arrowsEnabled i) ,("⤙", ITlarrowtail UnicodeSyntax,
,("⤚", ITrarrowtail, \i -> unicodeSyntaxEnabled i && arrowsEnabled i) \i -> unicodeSyntaxEnabled i && arrowsEnabled i)
,("⤛", ITLarrowtail, \i -> unicodeSyntaxEnabled i && arrowsEnabled i) ,("⤚", ITrarrowtail UnicodeSyntax,
,("⤜", ITRarrowtail, \i -> unicodeSyntaxEnabled i && arrowsEnabled i) \i -> unicodeSyntaxEnabled i && arrowsEnabled i)
,("⤛", ITLarrowtail UnicodeSyntax,
,("★", ITstar, unicodeSyntaxEnabled) \i -> unicodeSyntaxEnabled i && arrowsEnabled i)
,("⤜", ITRarrowtail UnicodeSyntax,
\i -> unicodeSyntaxEnabled i && arrowsEnabled i)
,("★", ITstar UnicodeSyntax, unicodeSyntaxEnabled)
-- ToDo: ideally, → and ∷ should be "specials", so that they cannot -- ToDo: ideally, → and ∷ should be "specials", so that they cannot
-- form part of a large operator. This would let us have a better -- form part of a large operator. This would let us have a better
......
This diff is collapsed.
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
(LiteralsTest.hs:4:3,ITvarid "y",[y]), (LiteralsTest.hs:4:3,ITvarid "y",[y]),
(LiteralsTest.hs:4:5-6,ITdcolon,[::]), (LiteralsTest.hs:4:5-6,ITdcolon NormalSyntax,[::]),
(LiteralsTest.hs:4:8-10,ITconid "Int",[Int]), (LiteralsTest.hs:4:8-10,ITconid "Int",[Int]),
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
(LiteralsTest.hs:8:1,ITvarid "s",[s]), (LiteralsTest.hs:8:1,ITvarid "s",[s]),
(LiteralsTest.hs:8:3-4,ITdcolon,[::]), (LiteralsTest.hs:8:3-4,ITdcolon NormalSyntax,[::]),
(LiteralsTest.hs:8:6-11,ITconid "String",[String]), (LiteralsTest.hs:8:6-11,ITconid "String",[String]),
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
(LiteralsTest.hs:11:1,ITvarid "c",[c]), (LiteralsTest.hs:11:1,ITvarid "c",[c]),
(LiteralsTest.hs:11:3-4,ITdcolon,[::]), (LiteralsTest.hs:11:3-4,ITdcolon NormalSyntax,[::]),
(LiteralsTest.hs:11:6-9,ITconid "Char",[Char]), (LiteralsTest.hs:11:6-9,ITconid "Char",[Char]),
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
(LiteralsTest.hs:14:1,ITvarid "d",[d]), (LiteralsTest.hs:14:1,ITvarid "d",[d]),
(LiteralsTest.hs:14:3-4,ITdcolon,[::]), (LiteralsTest.hs:14:3-4,ITdcolon NormalSyntax,[::]),
(LiteralsTest.hs:14:6-11,ITconid "Double",[Double]), (LiteralsTest.hs:14:6-11,ITconid "Double",[Double]),
......
...@@ -102,3 +102,7 @@ T10313: ...@@ -102,3 +102,7 @@ T10313:
rm -f stringSource.o stringSource.hi rm -f stringSource.o stringSource.hi
'$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 -package ghc stringSource '$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 -package ghc stringSource
./stringSource "`'$(TEST_HC)' $(TEST_HC_OPTS) --print-libdir | tr -d '\r'`" Test10313 ./stringSource "`'$(TEST_HC)' $(TEST_HC_OPTS) --print-libdir | tr -d '\r'`" Test10313
.PHONY: T11018
T11018:
$(CHECK_API_ANNOTATIONS) "`'$(TEST_HC)' $(TEST_HC_OPTS) --print-libdir | tr -d '\r'`" Test11018
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
((Test10307.hs:5:3-34,AnnDcolon), [Test10307.hs:5:31-32]), ((Test10307.hs:5:3-34,AnnDcolon), [Test10307.hs:5:31-32]),
((Test10307.hs:5:3-34,AnnSemi), [Test10307.hs:6:3]), ((Test10307.hs:5:3-34,AnnSemi), [Test10307.hs:6:3]),
((Test10307.hs:5:3-34,AnnType), [Test10307.hs:5:3-6]), ((Test10307.hs:5:3-34,AnnType), [Test10307.hs:5:3-6]),
((Test10307.hs:5:34,AnnStar), [Test10307.hs:5:34]),
((Test10307.hs:6:3-34,AnnEqual), [Test10307.hs:6:31]), ((Test10307.hs:6:3-34,AnnEqual), [Test10307.hs:6:31]),
((Test10307.hs:6:3-34,AnnType), [Test10307.hs:6:3-6]), ((Test10307.hs:6:3-34,AnnType), [Test10307.hs:6:3-6]),
((Test10307.hs:6:8-34,AnnEqual), [Test10307.hs:6:31]), ((Test10307.hs:6:8-34,AnnEqual), [Test10307.hs:6:31]),
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
((Test10312.hs:(16,19)-(20,19),AnnVbar), [Test10312.hs:17:19]), ((Test10312.hs:(16,19)-(20,19),AnnVbar), [Test10312.hs:17:19]),
((Test10312.hs:16:21-25,AnnVal), [Test10312.hs:16:23]), ((Test10312.hs:16:21-25,AnnVal), [Test10312.hs:16:23]),
((Test10312.hs:16:21-29,AnnVal), [Test10312.hs:16:27]), ((Test10312.hs:16:21-29,AnnVal), [Test10312.hs:16:27]),
((Test10312.hs:16:27,AnnStar), [Test10312.hs:16:27]),
((Test10312.hs:17:21-32,AnnComma), [Test10312.hs:18:19]), ((Test10312.hs:17:21-32,AnnComma), [Test10312.hs:18:19]),
((Test10312.hs:17:21-32,AnnLarrow), [Test10312.hs:17:23-24]), ((Test10312.hs:17:21-32,AnnLarrow), [Test10312.hs:17:23-24]),
((Test10312.hs:17:26-32,AnnCloseS), [Test10312.hs:17:32]), ((Test10312.hs:17:26-32,AnnCloseS), [Test10312.hs:17:32]),
...@@ -59,6 +60,7 @@ ...@@ -59,6 +60,7 @@
((Test10312.hs:(23,20)-(27,20),AnnVbar), [Test10312.hs:24:20]), ((Test10312.hs:(23,20)-(27,20),AnnVbar), [Test10312.hs:24:20]),
((Test10312.hs:23:22-26,AnnVal), [Test10312.hs:23:24]), ((Test10312.hs:23:22-26,AnnVal), [Test10312.hs:23:24]),
((Test10312.hs:23:22-30,AnnVal), [Test10312.hs:23:28]), ((Test10312.hs:23:22-30,AnnVal), [Test10312.hs:23:28]),
((Test10312.hs:23:28,AnnStar), [Test10312.hs:23:28]),
((Test10312.hs:24:22-33,AnnLarrow), [Test10312.hs:24:24-25]), ((Test10312.hs:24:22-33,AnnLarrow), [Test10312.hs:24:24-25]),
((Test10312.hs:24:22-33,AnnVbar), [Test10312.hs:25:20]), ((Test10312.hs:24:22-33,AnnVbar), [Test10312.hs:25:20]),
((Test10312.hs:24:27-33,AnnCloseS), [Test10312.hs:24:33]), ((Test10312.hs:24:27-33,AnnCloseS), [Test10312.hs:24:33]),
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
((Test10357.hs:7:28,AnnComma), [Test10357.hs:7:29]), ((Test10357.hs:7:28,AnnComma), [Test10357.hs:7:29]),
((Test10357.hs:7:31-36,AnnVal), [Test10357.hs:7:33]), ((Test10357.hs:7:31-36,AnnVal), [Test10357.hs:7:33]),
((Test10357.hs:7:31-40,AnnVal), [Test10357.hs:7:38]), ((Test10357.hs:7:31-40,AnnVal), [Test10357.hs:7:38]),
((Test10357.hs:7:33,AnnStar), [Test10357.hs:7:33]),
((Test10357.hs:7:43-52,AnnBackquote), [Test10357.hs:7:43, Test10357.hs:7:52]), ((Test10357.hs:7:43-52,AnnBackquote), [Test10357.hs:7:43, Test10357.hs:7:52]),
((Test10357.hs:7:43-52,AnnVal), [Test10357.hs:7:44-51]), ((Test10357.hs:7:43-52,AnnVal), [Test10357.hs:7:44-51]),
((Test10357.hs:8:18-59,AnnCloseP), [Test10357.hs:8:59]), ((Test10357.hs:8:18-59,AnnCloseP), [Test10357.hs:8:59]),
......
...@@ -15,18 +15,23 @@ ...@@ -15,18 +15,23 @@
((Test10358.hs:5:7-16,AnnEqual), [Test10358.hs:5:12]), ((Test10358.hs:5:7-16,AnnEqual), [Test10358.hs:5:12]),
((Test10358.hs:5:7-16,AnnSemi), [Test10358.hs:5:17]), ((Test10358.hs:5:7-16,AnnSemi), [Test10358.hs:5:17]),
((Test10358.hs:5:14-16,AnnVal), [Test10358.hs:5:15]), ((Test10358.hs:5:14-16,AnnVal), [Test10358.hs:5:15]),
((Test10358.hs:5:15,AnnStar), [Test10358.hs:5:15]),
((Test10358.hs:5:19-22,AnnBang), [Test10358.hs:5:19]), ((Test10358.hs:5:19-22,AnnBang), [Test10358.hs:5:19]),
((Test10358.hs:5:19-32,AnnEqual), [Test10358.hs:5:24]), ((Test10358.hs:5:19-32,AnnEqual), [Test10358.hs:5:24]),
((Test10358.hs:5:19-32,AnnSemi), [Test10358.hs:6:7]), ((Test10358.hs:5:19-32,AnnSemi), [Test10358.hs:6:7]),
((Test10358.hs:5:26-32,AnnVal), [Test10358.hs:5:29]), ((Test10358.hs:5:26-32,AnnVal), [Test10358.hs:5:29]),
((Test10358.hs:5:29,AnnStar), [Test10358.hs:5:29]),
((Test10358.hs:6:7-16,AnnEqual), [Test10358.hs:6:10]), ((Test10358.hs:6:7-16,AnnEqual), [Test10358.hs:6:10]),
((Test10358.hs:6:7-16,AnnFunId), [Test10358.hs:6:7-8]), ((Test10358.hs:6:7-16,AnnFunId), [Test10358.hs:6:7-8]),
((Test10358.hs:6:7-16,AnnSemi), [Test10358.hs:7:7]), ((Test10358.hs:6:7-16,AnnSemi), [Test10358.hs:7:7]),
((Test10358.hs:6:12-14,AnnVal), [Test10358.hs:6:13]), ((Test10358.hs:6:12-14,AnnVal), [Test10358.hs:6:13]),
((Test10358.hs:6:12-16,AnnVal), [Test10358.hs:6:15]), ((Test10358.hs:6:12-16,AnnVal), [Test10358.hs:6:15]),
((Test10358.hs:6:13,AnnStar), [Test10358.hs:6:13]),
((Test10358.hs:6:15,AnnStar), [Test10358.hs:6:15]),
((Test10358.hs:7:7-17,AnnEqual), [Test10358.hs:7:10]), ((Test10358.hs:7:7-17,AnnEqual), [Test10358.hs:7:10]),
((Test10358.hs:7:7-17,AnnFunId), [Test10358.hs:7:7-8]), ((Test10358.hs:7:7-17,AnnFunId), [Test10358.hs:7:7-8]),
((Test10358.hs:7:12-17,AnnVal), [Test10358.hs:7:14]), ((Test10358.hs:7:12-17,AnnVal), [Test10358.hs:7:14]),
((Test10358.hs:7:14,AnnStar), [Test10358.hs:7:14]),
((<no location info>,AnnEofPos), [Test10358.hs:9:1]) ((<no location info>,AnnEofPos), [Test10358.hs:9:1])
] ]
Test11018.hs:12:26: error:
Illegal kind signature: ‘* -> *’
Perhaps you intended to use KindSignatures
In the data type declaration for ‘Recorder’
Test11018.hs:14:23: error:
Not in scope: type constructor or class ‘FinalizerHandle’
Test11018.hs:17:6: error:
Not in scope: type constructor or class ‘Arrow’
Test11018.hs:20:7: error:
Not in scope: type constructor or class ‘Arrow’
Test11018.hs:23:6: error:
Not in scope: type constructor or class ‘ArrowApply’
Test11018.hs:26:7: error:
Not in scope: type constructor or class ‘ArrowApply’
Test11018.hs:37:27: error:
Illegal kind signature: ‘* -> *’
Perhaps you intended to use KindSignatures
In the data type declaration for ‘RecorderU’
Test11018.hs:39:23: error:
Not in scope: type constructor or class ‘FinalizerHandle’
Test11018.hs:42:7: error:
Not in scope: type constructor or class ‘Arrow’
Test11018.hs:45:8: error:
Not in scope: type constructor or class ‘Arrow’
Test11018.hs:48:7: error:
Not in scope: type constructor or class ‘ArrowApply’
Test11018.hs:51:8: error:
Not in scope: type constructor or class ‘ArrowApply’
---Problems (should be empty list)---
[]
---Annotations-----------------------
-- SrcSpan the annotation is attached to, AnnKeywordId,
-- list of locations the keyword item appears in
[
((Test11018.hs:1:1,AnnModule), [Test11018.hs:4:1-6]),
((Test11018.hs:1:1,AnnWhere), [Test11018.hs:4:18-22]),
((Test11018.hs:6:1-36,AnnDcolon), [Test11018.hs:6:12-13]),
((Test11018.hs:6:1-36,AnnSemi), [Test11018.hs:7:1]),
((Test11018.hs:6:15-36,AnnDot), [Test11018.hs:6:24]),
((Test11018.hs:6:15-36,AnnForall), [Test11018.hs:6:15-20]),
((Test11018.hs:6:26-36,AnnRarrow), [Test11018.hs:6:28-29]),
((Test11018.hs:(7,1)-(9,10),AnnEqual), [Test11018.hs:7:14]),
((Test11018.hs:(7,1)-(9,10),AnnFunId), [Test11018.hs:7:1-10]),
((Test11018.hs:(7,1)-(9,10),AnnSemi), [Test11018.hs:12:1]),
((Test11018.hs:(7,16)-(9,10),AnnDo), [Test11018.hs:7:16-17]),
((Test11018.hs:8:3-15,AnnLarrow), [Test11018.hs:8:5-6]),
((Test11018.hs:8:3-15,AnnSemi), [Test11018.hs:9:3]),
((Test11018.hs:(12,1)-(15,7),AnnData), [Test11018.hs:12:1-4]),
((Test11018.hs:(12,1)-(15,7),AnnEqual), [Test11018.hs:13:5]),
((Test11018.hs:(12,1)-(15,7),AnnSemi), [Test11018.hs:17:1]),
((Test11018.hs:12:21-32,AnnCloseP), [Test11018.hs:12:32]),
((Test11018.hs:12:21-32,AnnDcolonU), [Test11018.hs:12:24]),
((Test11018.hs:12:21-32,AnnOpenP), [Test11018.hs:12:21]),
((Test11018.hs:12:26,AnnStar), [Test11018.hs:12:26]),
((Test11018.hs:12:26-31,AnnRarrow), [Test11018.hs:12:28-29]),
((Test11018.hs:12:31,AnnStar), [Test11018.hs:12:31]),
((Test11018.hs:(13,16)-(15,7),AnnCloseC), [Test11018.hs:15:7]),
((Test11018.hs:(13,16)-(15,7),AnnOpenC), [Test11018.hs:13:16]),
((Test11018.hs:14:9-40,AnnDcolon), [Test11018.hs:14:18-19]),
((Test11018.hs:14:21-40,AnnBang), [Test11018.hs:14:21]),
((Test11018.hs:14:22-40,AnnCloseP), [Test11018.hs:14:40]),
((Test11018.hs:14:22-40,AnnOpenP), [Test11018.hs:14:22]),
((Test11018.hs:17:1-35,AnnDcolon), [Test11018.hs:17:3-4]),
((Test11018.hs:17:1-35,AnnSemi), [Test11018.hs:18:1]),
((Test11018.hs:17:6-12,AnnDarrow), [Test11018.hs:17:14-15]),
((Test11018.hs:17:19-31,AnnCloseP), [Test11018.hs:17:31]),
((Test11018.hs:17:19-31,AnnOpenP), [Test11018.hs:17:19]),
((Test11018.hs:17:20-22,AnnComma), [Test11018.hs:17:23]),
((Test11018.hs:17:24-26,AnnComma), [Test11018.hs:17:27]),
((Test11018.hs:18:1-34,AnnEqual), [Test11018.hs:18:3]),
((Test11018.hs:18:1-34,AnnFunId), [Test11018.hs:18:1]),
((Test11018.hs:18:1-34,AnnSemi), [Test11018.hs:20:1]),
((Test11018.hs:18:5-34,AnnProc), [Test11018.hs:18:5-8]),
((Test11018.hs:18:5-34,AnnRarrow), [Test11018.hs:18:18-19]),
((Test11018.hs:18:10-16,AnnCloseP), [Test11018.hs:18:16]),
((Test11018.hs:18:10-16,AnnOpenP), [Test11018.hs:18:10]),
((Test11018.hs:18:11,AnnComma), [Test11018.hs:18:12]),
((Test11018.hs:18:13,AnnComma), [Test11018.hs:18:14]),
((Test11018.hs:18:21-34,Annlarrowtail), [Test11018.hs:18:29-30]),
((Test11018.hs:18:32-34,AnnVal), [Test11018.hs:18:33]),
((Test11018.hs:20:1-36,AnnDcolon), [Test11018.hs:20:4-5]),
((Test11018.hs:20:1-36,AnnSemi), [Test11018.hs:21:1]),
((Test11018.hs:20:7-13,AnnDarrow), [Test11018.hs:20:15-16]),
((Test11018.hs:20:20-32,AnnCloseP), [Test11018.hs:20:32]),
((Test11018.hs:20:20-32,AnnOpenP), [Test11018.hs:20:20]),
((Test11018.hs:20:21-23,AnnComma), [Test11018.hs:20:24]),
((Test11018.hs:20:25-27,AnnComma), [Test11018.hs:20:28]),
((Test11018.hs:21:1-35,AnnEqual), [Test11018.hs:21:4]),
((Test11018.hs:21:1-35,AnnFunId), [Test11018.hs:21:1-2]),
((Test11018.hs:21:1-35,AnnSemi), [Test11018.hs:23:1]),
((Test11018.hs:21:6-35,AnnProc), [Test11018.hs:21:6-9]),
((Test11018.hs:21:6-35,AnnRarrow), [Test11018.hs:21:19-20]),
((Test11018.hs:21:11-17,AnnCloseP), [Test11018.hs:21:17]),
((Test11018.hs:21:11-17,AnnOpenP), [Test11018.hs:21:11]),
((Test11018.hs:21:12,AnnComma), [Test11018.hs:21:13]),
((Test11018.hs:21:14,AnnComma), [Test11018.hs:21:15]),
((Test11018.hs:21:22-35,Annrarrowtail), [Test11018.hs:21:30-31]),
((Test11018.hs:21:33-35,AnnVal), [Test11018.hs:21:34]),
((Test11018.hs:23:1-49,AnnDcolon), [Test11018.hs:23:3-4]),
((Test11018.hs:23:1-49,AnnSemi), [Test11018.hs:24:1]),
((Test11018.hs:23:6-17,AnnDarrow), [Test11018.hs:23:19-20]),
((Test11018.hs:23:22-49,AnnRarrow), [Test11018.hs:23:26-27]),
((Test11018.hs:23:31-45,AnnCloseP), [Test11018.hs:23:45]),
((Test11018.hs:23:31-45,AnnOpenP), [Test11018.hs:23:31]),
((Test11018.hs:23:32-40,AnnComma), [Test11018.hs:23:41]),
((Test11018.hs:24:1-29,AnnEqual), [Test11018.hs:24:5]),
((Test11018.hs:24:1-29,AnnFunId), [Test11018.hs:24:1]),
((Test11018.hs:24:1-29,AnnSemi), [Test11018.hs:26:1]),
((Test11018.hs:24:7-29,AnnProc), [Test11018.hs:24:7-10]),
((Test11018.hs:24:7-29,AnnRarrow), [Test11018.hs:24:18-19]),
((Test11018.hs:24:12-16,AnnCloseP), [Test11018.hs:24:16]),
((Test11018.hs:24:12-16,AnnOpenP), [Test11018.hs:24:12]),
((Test11018.hs:24:13,AnnComma), [Test11018.hs:24:14]),
((Test11018.hs:24:21-29,AnnLarrowtail), [Test11018.hs:24:23-25]),
((Test11018.hs:24:27-29,AnnVal), [Test11018.hs:24:28]),
((Test11018.hs:26:1-50,AnnDcolon), [Test11018.hs:26:4-5]),
((Test11018.hs:26:1-50,AnnSemi), [Test11018.hs:27:1]),
((Test11018.hs:26:7-18,AnnDarrow), [Test11018.hs:26:20-21]),
((Test11018.hs:26:23-50,AnnRarrow), [Test11018.hs:26:27-28]),
((Test11018.hs:26:32-46,AnnCloseP), [Test11018.hs:26:46]),
((Test11018.hs:26:32-46,AnnOpenP), [Test11018.hs:26:32]),
((Test11018.hs:26:33-41,AnnComma), [Test11018.hs:26:42]),
((Test11018.hs:27:1-30,AnnEqual), [Test11018.hs:27:6]),
((Test11018.hs:27:1-30,AnnFunId), [Test11018.hs:27:1-2]),
((Test11018.hs:27:1-30,AnnSemi), [Test11018.hs:31:1]),
((Test11018.hs:27:8-30,AnnProc), [Test11018.hs:27:8-11]),
((Test11018.hs:27:8-30,AnnRarrow), [Test11018.hs:27:19-20]),
((Test11018.hs:27:13-17,AnnCloseP), [Test11018.hs:27:17]),
((Test11018.hs:27:13-17,AnnOpenP), [Test11018.hs:27:13]),
((Test11018.hs:27:14,AnnComma), [Test11018.hs:27:15]),
((Test11018.hs:27:22-30,AnnRarrowtail), [Test11018.hs:27:24-26]),
((Test11018.hs:27:28-30,AnnVal), [Test11018.hs:27:29]),
((Test11018.hs:31:1-26,AnnDcolonU), [Test11018.hs:31:9]),
((Test11018.hs:31:1-26,AnnSemi), [Test11018.hs:32:1]),
((Test11018.hs:31:11-26,AnnDot), [Test11018.hs:31:15]),
((Test11018.hs:31:11-26,AnnForallU), [Test11018.hs:31:11]),
((Test11018.hs:31:17-26,AnnRarrowU), [Test11018.hs:31:19]),
((Test11018.hs:(32,1)-(34,10),AnnEqual), [Test11018.hs:32:11]),
((Test11018.hs:(32,1)-(34,10),AnnFunId), [Test11018.hs:32:1-7]),
((Test11018.hs:(32,1)-(34,10),AnnSemi), [Test11018.hs:37:1]),
((Test11018.hs:(32,13)-(34,10),AnnDo), [Test11018.hs:32:13-14]),
((Test11018.hs:33:3-14,AnnLarrowU), [Test11018.hs:33:5]),
((Test11018.hs:33:3-14,AnnSemi), [Test11018.hs:34:3]),
((Test11018.hs:(37,1)-(40,7),AnnData), [Test11018.hs:37:1-4]),
((Test11018.hs:(37,1)-(40,7),AnnEqual), [Test11018.hs:38:5]),
((Test11018.hs:(37,1)-(40,7),AnnSemi), [Test11018.hs:42:1]),
((Test11018.hs:37:22-32,AnnCloseP), [Test11018.hs:37:32]),
((Test11018.hs:37:22-32,AnnDcolonU), [Test11018.hs:37:25]),
((Test11018.hs:37:22-32,AnnOpenP), [Test11018.hs:37:22]),
((Test11018.hs:37:27,AnnStarU), [Test11018.hs:37:27]),
((Test11018.hs:37:27-31,AnnRarrowU), [Test11018.hs:37:29]),
((Test11018.hs:37:31,AnnStarU), [Test11018.hs:37:31]),
((Test11018.hs:(38,17)-(40,7),AnnCloseC), [Test11018.hs:40:7]),
((Test11018.hs:(38,17)-(40,7),AnnOpenC), [Test11018.hs:38:17]),
((Test11018.hs:39:9-40,AnnDcolonU), [Test11018.hs:39:19]),
((Test11018.hs:39:21-40,AnnBang), [Test11018.hs:39:21]),
((Test11018.hs:39:22-40,AnnCloseP), [Test11018.hs:39:40]),
((Test11018.hs:39:22-40,AnnOpenP), [Test11018.hs:39:22]),
((Test11018.hs:42:1-36,AnnDcolon), [Test11018.hs:42:4-5]),
((Test11018.hs:42:1-36,AnnSemi), [Test11018.hs:43:1]),
((Test11018.hs:42:7-13,AnnDarrowU), [Test11018.hs:42:16]),
((Test11018.hs:42:20-32,AnnCloseP), [Test11018.hs:42:32]),
<