haskell-src-exts 1.22.0 → 1.24.0
raw patch · 50 files changed
Files
- CHANGELOG +29/−0
- haskell-src-exts.cabal +7/−13
- src/Language/Haskell/Exts.hs +3/−1
- src/Language/Haskell/Exts/Build.hs +2/−0
- src/Language/Haskell/Exts/Comments.hs +2/−1
- src/Language/Haskell/Exts/ExactPrint.hs +47/−12
- src/Language/Haskell/Exts/ExtScheme.hs +2/−0
- src/Language/Haskell/Exts/Extension.hs +6/−2
- src/Language/Haskell/Exts/Fixity.hs +2/−2
- src/Language/Haskell/Exts/InternalLexer.hs +28/−15
- src/Language/Haskell/Exts/InternalParser.ly +30/−10
- src/Language/Haskell/Exts/Lexer.hs +2/−0
- src/Language/Haskell/Exts/ParseMonad.hs +6/−7
- src/Language/Haskell/Exts/ParseSyntax.hs +3/−0
- src/Language/Haskell/Exts/ParseUtils.hs +1/−0
- src/Language/Haskell/Exts/Parser.hs +1/−0
- src/Language/Haskell/Exts/Pretty.hs +15/−3
- src/Language/Haskell/Exts/SrcLoc.hs +6/−2
- src/Language/Haskell/Exts/Syntax.hs +3/−0
- src/Language/Preprocessor/Unlit.hs +13/−13
- tests/Extensions.hs +19/−1
- tests/Runner.hs +3/−1
- tests/examples/AmbiguousFixities.hs.exactprinter.golden +1/−1
- tests/examples/AmbiguousFixities.hs.prettyparser.golden +1/−1
- tests/examples/AmbiguousFixities.hs.prettyprinter.golden +1/−1
- tests/examples/ArrowBrackets.hs +8/−0
- tests/examples/ArrowBrackets.hs.exactprinter.golden +1/−0
- tests/examples/ArrowBrackets.hs.parser.golden +541/−0
- tests/examples/ArrowBrackets.hs.prettyparser.golden +1/−0
- tests/examples/ArrowBrackets.hs.prettyprinter.golden +7/−0
- tests/examples/BlockArguments.hs +16/−0
- tests/examples/BlockArguments.hs.exactprinter.golden +1/−0
- tests/examples/BlockArguments.hs.parser.golden +1099/−0
- tests/examples/BlockArguments.hs.prettyparser.golden +10/−0
- tests/examples/BlockArguments.hs.prettyprinter.golden +15/−0
- tests/examples/ImportQualifiedPost.hs +4/−0
- tests/examples/ImportQualifiedPost.hs.exactprinter.golden +1/−0
- tests/examples/ImportQualifiedPost.hs.parser.golden +89/−0
- tests/examples/ImportQualifiedPost.hs.prettyparser.golden +1/−0
- tests/examples/ImportQualifiedPost.hs.prettyprinter.golden +3/−0
- tests/examples/PromotedSpace.hs +20/−0
- tests/examples/PromotedSpace.hs.exactprinter.golden +1/−0
- tests/examples/PromotedSpace.hs.parser.golden +617/−0
- tests/examples/PromotedSpace.hs.prettyparser.golden +1/−0
- tests/examples/PromotedSpace.hs.prettyprinter.golden +14/−0
- tests/examples/T326.hs +4/−0
- tests/examples/T326.hs.exactprinter.golden +1/−0
- tests/examples/T326.hs.parser.golden +116/−0
- tests/examples/T326.hs.prettyparser.golden +1/−0
- tests/examples/T326.hs.prettyprinter.golden +3/−0
CHANGELOG view
@@ -1,5 +1,34 @@+1.23.1 --> 1.24.0+=================+* Support ImportQualifiedPost (#477)+ - Technically breaking change: KnownExtension gained a new constructor ImportQualifiedPost+* Fix pretty printing of promoted list/tuple with space padding (#423)+* Fix lexing of operator symbols like @: when TypeApplications is enabled (#430)+* Read files strictly before closing to prevent resource leaks (#460)+* Add Safe Haskell annotations to many modules (#465)+* Remove noncanonical return and mappend definitions (#481)+* Solve some compiler warnings (#464)+* Performance optimization: use strict accumulators in lexString and parseInteger (#479)+++1.23.0 --> 1.23.1+=================+* show instance for SrcLoc and SrcSpan renders "(-1)" instead of "-1"+* Allow empty closed type families (#452)+++1.22.0 --> 1.23.0+=================+* Add support for BlockArguments (#444)+ - Technically breaking change: KnownExtension gained a new constructor BlockArguments+* Add support for Arrow Brackets (#445)+ - Tecnically breaking change: Exp gained new constructor ArrOp+ 1.21.1 --> 1.22.0 =================+* Support QuantifiedConstraints (#427)+ - Breaking change: constructors for PAsst changed+ - Technically breaking change: KnownExtention gained a new constructor QuantifiedConstraints * Support Template Haskell typed splices and quotations (#432) - Breaking change: new constructors on Token data type * Fix unicode identifier parsing (#442)
haskell-src-exts.cabal view
@@ -1,5 +1,5 @@ Name: haskell-src-exts-Version: 1.22.0+Version: 1.24.0 License: BSD3 License-File: LICENSE Build-Type: Simple@@ -18,14 +18,7 @@ Bug-Reports: https://github.com/haskell-suite/haskell-src-exts/issues Stability: Stable Cabal-Version: >= 1.10-Tested-With:- GHC == 7.8.2- , GHC == 7.10.3- , GHC == 8.0.2- , GHC == 8.2.2- , GHC == 8.4.4- , GHC == 8.6.5- , GHC == 8.8.1+Tested-With: GHC == 9.14.1 Extra-Source-Files: README.md@@ -47,15 +40,16 @@ Library Default-language: Haskell98 Build-Tools: happy >= 1.19- Build-Depends: array >= 0.1, pretty >= 1.0,+ Build-Depends: array >= 0.1 && < 0.6,+ pretty >= 1.0 && < 1.2, base >= 4.5 && < 5, -- this is needed to access GHC.Generics on GHC 7.4- ghc-prim+ ghc-prim < 0.14 -- this is needed to access Data.Semigroup and Control.Monad.Fail on GHCs -- before 8.0 if !impl(ghc >= 8.0) Build-Depends:- semigroups >= 0.18.3,+ semigroups >= 0.18.3 && < 0.21, fail == 4.9.* Exposed-modules: Language.Haskell.Exts,@@ -92,7 +86,7 @@ other-modules: Extensions GHC-Options: -threaded -Wall Default-language: Haskell2010- Build-depends: base < 5,+ Build-depends: base, mtl, containers, haskell-src-exts,
src/Language/Haskell/Exts.hs view
@@ -160,7 +160,9 @@ readUTF8File fp = do h <- openFile fp ReadMode hSetEncoding h utf8- hGetContents h+ c <- hGetContents h >>= \s -> length s `seq` return s+ hClose h+ return c -- | Converts a parse result with comments to a parse result with comments and -- unknown pragmas.
src/Language/Haskell/Exts/Build.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE Safe #-}+ ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.Build
src/Language/Haskell/Exts/Comments.hs view
@@ -1,4 +1,5 @@-{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveDataTypeable, Safe #-}+ ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.Comments
src/Language/Haskell/Exts/ExactPrint.hs view
@@ -1,5 +1,5 @@-{-# LANGUAGE DeriveFunctor #-}-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP, DeriveFunctor, Safe #-}+ ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.Annotated.ExactPrint@@ -47,11 +47,10 @@ fmap = liftM instance Applicative EP where- pure = return+ pure x = EP $ \l cs -> (x, l, cs, id) (<*>) = ap instance Monad EP where- return x = EP $ \l cs -> (x, l, cs, id) EP m >>= k = EP $ \l0 c0 -> let (a, l1, c1, s1) = m l0 c0@@ -414,13 +413,18 @@ return pts' _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints" else return pts1- pts3 <- if qf then- case pts2 of- x:pts' -> do++ -- Try to determine if qualified is post-positioned only if we have enough points+ let isPostQual = (qf && not (null pts2)) && safeIsPostQualified pts2++ pts3 <- if qf && not isPostQual then+ case pts2 of+ x:pts' -> do printStringAt (pos x) "qualified" return pts'- _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+ _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints" else return pts2+ pts4 <- case mpkg of Just pkg -> case pts3 of@@ -429,20 +433,44 @@ return pts' _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints" _ -> return pts3+ exactPC mn- _ <- case mas of- Just as ->++ -- Only try post-qualified if we determined it's actually post-qualified+ pts5 <- if qf && isPostQual then case pts4 of x:pts' -> do+ printStringAt (pos x) "qualified"+ return pts'+ _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+ else return pts4++ _ <- case mas of+ Just as ->+ case pts5 of+ x:pts' -> do printStringAt (pos x) "as" exactPC as return pts'- _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"- _ -> return pts4+ _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+ _ -> return pts5+ case mispecs of Nothing -> return () Just ispecs -> exactPC ispecs _ -> errorEP "ExactP: ImportDecl is given too few srcInfoPoints"+ where safeIsPostQualified pts =+ case pts of+ (p:_) ->+ let modSpan = srcInfoSpan (ann mn)+ -- Only consider it post-qualified if we have valid spans to compare+ in ((isValidSpan modSpan && isValidSpan p) &&+ (srcSpanEnd modSpan <= srcSpanStart p))+ _ -> False+ where+ isValidSpan s =+ srcSpanStartLine s > 0 && srcSpanEndLine s > 0 &&+ srcSpanStartColumn s >= 0 && srcSpanEndColumn s >= 0 instance ExactP Module where exactP mdl = case mdl of@@ -1726,6 +1754,13 @@ printStringAt (pos a) ">>-" exactPC e2 _ -> errorEP "ExactP: Exp: RightArrHighApp is given wrong number of srcInfoPoints"++ ArrOp l e -> case srcInfoPoints l of+ [a, b] -> do+ printStringAt (pos a) "(|"+ exactPC e+ printStringAt (pos b) "|)"+ _ -> errorEP "ExactP: Exp: ArrOp is given wrong number of srcInfoPoints" LCase l alts -> case srcInfoPoints l of
src/Language/Haskell/Exts/ExtScheme.hs view
@@ -1,4 +1,6 @@+{-# LANGUAGE Safe #-} {-# OPTIONS_HADDOCK hide #-}+ ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.ExtScheme
src/Language/Haskell/Exts/Extension.hs view
@@ -1,5 +1,5 @@-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP, DeriveDataTypeable, Safe #-}+ ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.Extension@@ -375,6 +375,8 @@ -- > import "network" Network.Socket | PackageImports + | ImportQualifiedPost+ | LambdaCase -- | [GHC § 7.3.20] Allow case expressions with no alternatives.@@ -557,6 +559,8 @@ | DerivingVia | QuantifiedConstraints++ | BlockArguments deriving (Show, Read, Eq, Ord, Enum, Bounded, Data, Typeable)
src/Language/Haskell/Exts/Fixity.hs view
@@ -1,5 +1,5 @@-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP, DeriveDataTypeable, Safe #-}+ ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.Fixity
src/Language/Haskell/Exts/InternalLexer.hs view
@@ -1,4 +1,7 @@+{-# LANGUAGE Safe #-}+{-# LANGUAGE BangPatterns #-} {-# OPTIONS_HADDOCK hide #-}+ ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.Annotated.InternalLexer@@ -99,6 +102,8 @@ | RightArrowTail -- >- | LeftDblArrowTail -- -<< | RightDblArrowTail -- >>-+ | OpenArrowBracket -- (|+ | CloseArrowBracket -- |) -- Template Haskell | THExpQuote -- [| or [e|@@ -376,8 +381,9 @@ -- Used in the lexing of type applications -- Why is it like this? I don't know exactly but this is how it is in -- GHC's parser.+-- Symbol `:` is added so that `@:` is lexed as `VarSym "@:"`. See Issue #326 isOpSymbol :: Char -> Bool-isOpSymbol c = c `elem` "!#$%&*+./<=>?@\\^|-~"+isOpSymbol c = c `elem` ":!#$%&*+./<=>?@\\^|-~" -- | Checks whether the character would be legal in some position of a qvar. -- Means that '..' and "AAA" will pass the test.@@ -685,13 +691,12 @@ -- end implicit parameters -- harp--- '(':'|':c:_ | isHSymbol c -> discard 1 >> return LeftParen '(':'|':c:_ | RegularPatterns `elem` exts && not (isHSymbol c) ->- do discard 2- return RPGuardOpen- '|':')':_ | RegularPatterns `elem` exts ->- do discard 2- return RPGuardClose+ discard 2 >> return RPGuardOpen+ | Arrows `elem` exts && not (isHSymbol c) ->+ discard 2 >> return OpenArrowBracket+ '|':')':_ | RegularPatterns `elem` exts -> discard 2 >> return RPGuardClose+ | Arrows `elem` exts -> discard 2 >> return CloseArrowBracket {- This is handled by the reserved_ops above. '@':':':_ | RegularPatterns `elem` exts -> do discard 2@@ -1142,23 +1147,23 @@ lexString :: Lex a Token-lexString = loop ("","")+lexString = loop [] [] where- loop (s,raw) = do+ loop !s !raw = do r <- getInput exts <- getExtensionsL case r of '\\':'&':_ -> do discard 2- loop (s, '&':'\\':raw)+ loop s ('&':'\\':raw) '\\':c:_ | isSpace c -> do discard 1 wcs <- lexWhiteChars matchChar '\\' "Illegal character in string gap"- loop (s, '\\':reverse wcs ++ '\\':raw)+ loop s ('\\':revAppend wcs ('\\':raw)) | otherwise -> do (ce, str) <- lexEscape- loop (ce:s, reverse str ++ '\\':raw)+ loop (ce `seq` ce : s) (revAppend str ('\\':raw)) '"':'#':_ | MagicHash `elem` exts -> do discard 2 return (StringHash (reverse s, reverse raw))@@ -1167,9 +1172,13 @@ return (StringTok (reverse s, reverse raw)) c:_ | c /= '\n' -> do discard 1- loop (c:s, c:raw)+ loop (c:s) (c:raw) _ -> fail "Improperly terminated string" + revAppend :: [a] -> [a] -> [a]+ revAppend [] ys = ys+ revAppend (x:xs) ys = revAppend xs (x:ys)+ lexWhiteChars :: Lex a String lexWhiteChars = do s <- getInput@@ -1300,8 +1309,10 @@ -- Stolen from Hugs's Prelude parseInteger :: Integer -> String -> Integer-parseInteger radix ds =- foldl1 (\n d -> n * radix + d) (map (toInteger . digitToInt) ds)+parseInteger radix = go 0+ where+ go !acc [] = acc+ go !acc (d:ds) = go (acc * radix + toInteger (digitToInt d)) ds flagKW :: Token -> Lex a () flagKW t =@@ -1375,6 +1386,8 @@ RightArrowTail -> ">-" LeftDblArrowTail -> "-<<" RightDblArrowTail -> ">>-"+ OpenArrowBracket -> "(|"+ CloseArrowBracket -> "|)" THExpQuote -> "[|" THTExpQuote -> "[||" THPatQuote -> "[p|"
src/Language/Haskell/Exts/InternalParser.ly view
@@ -1,6 +1,7 @@ > { > {-# LANGUAGE CPP #-} > {-# OPTIONS_HADDOCK hide #-}+> > ----------------------------------------------------------------------------- > -- | > -- Module : Language.Haskell.Exts.Annotated.Parser@@ -172,11 +173,13 @@ > '>-' { Loc $$ RightArrowTail } > '-<<' { Loc $$ LeftDblArrowTail } > '>>-' { Loc $$ RightDblArrowTail }+> '(|' { Loc $$ OpenArrowBracket }+> '|)' { Loc $$ CloseArrowBracket } Harp -> '(|' { Loc $$ RPGuardOpen }-> '|)' { Loc $$ RPGuardClose }+> '(/' { Loc $$ RPGuardOpen }+> '/)' { Loc $$ RPGuardClose } > '@:' { Loc $$ RPCAt } Template Haskell@@ -463,10 +466,10 @@ > | impdecl { ([$1],[]) } > impdecl :: { ImportDecl L }-> : 'import' optsrc optsafe optqualified maybepkg modid maybeas maybeimpspec-> { let { (mmn,ss,ml) = $7 ;-> l = nIS $1 <++> ann $6 <+?> ml <+?> (fmap ann) $8 <** ($1:snd $2 ++ snd $3 ++ snd $4 ++ snd $5 ++ ss)}-> in ImportDecl l $6 (fst $4) (fst $2) (fst $3) (fst $5) mmn $8 }+> : 'import' optsrc optsafe optqualified maybepkg modid optqualified_post maybeas maybeimpspec+> { let { (mmn,ss,ml) = $8 ;+> l = nIS $1 <++> ann $6 <+?> ml <+?> (fmap ann) $9 <** ($1:snd $2 ++ snd $3 ++ snd $4 ++ snd $5 ++ snd $7 ++ ss)}+> in ImportDecl l $6 (fst $4 || fst $7) (fst $2) (fst $3) (fst $5) mmn $9 } > optsrc :: { (Bool,[S]) } > : '{-# SOURCE' '#-}' { (True,[$1,$2]) }@@ -481,6 +484,11 @@ > : 'qualified' { (True,[$1]) } > | {- empty -} { (False, []) } +> optqualified_post :: { (Bool,[S]) }+> : 'qualified' {% do { checkEnabled ImportQualifiedPost;+> return (True,[$1]) } }+> | {- empty -} { (False, []) }+ Requires the PackageImports extension enabled. > maybepkg :: { (Maybe String,[S]) } > : STRING {% do { checkEnabled PackageImports ;@@ -751,6 +759,7 @@ > : ty_fam_inst_eqns ';' ty_fam_inst_eqn { $1 ++ [$3] } > | ty_fam_inst_eqns ';' { $1 } > | ty_fam_inst_eqn { [$1] }+> | { [] } > ty_fam_inst_eqn :: { TypeEqn L } > : truectype '=' truectype@@ -1431,6 +1440,11 @@ > | exp10b { $1 } > exp10a :: { PExp L }+> : expblocka { $1 }+> | fexp expblocka {% checkEnabled BlockArguments >>+> return (App ($1 <> $2) $1 $2) }++> expblocka :: { PExp L } > : '\\' apats '->' exp { Lambda (nIS $1 <++> ann $4 <** [$1,$3]) (reverse $2) $4 } A let may bind implicit parameters > | 'let' binds 'in' exp { Let (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }@@ -1455,14 +1469,17 @@ mdo blocks require the RecursiveDo extension enabled, but the lexer handles that. > exp10b :: { PExp L }+> : expblockb { $1 }+> | '-' fexp { NegApp (nIS $1 <++> ann $2 <** [$1]) $2 }+> | fexp { $1 }++> expblockb :: { PExp L } > : 'case' exp 'of' altslist { let (als, inf, ss) = $4 in Case (nIS $1 <++> inf <** ($1:$3:ss)) $2 als } > | '\\' 'case' altslist {% do { checkEnabled LambdaCase ; > let { (als, inf, ss) = $3 } ; > return (LCase (nIS $1 <++> inf <** ($1:$2:ss)) als) } }-> | '-' fexp { NegApp (nIS $1 <++> ann $2 <** [$1]) $2 } > | 'do' stmtlist { let (sts, inf, ss) = $2 in Do (nIS $1 <++> inf <** $1:ss) sts } > | 'mdo' stmtlist { let (sts, inf, ss) = $2 in MDo (nIS $1 <++> inf <** $1:ss) sts }-> | fexp { $1 } > exppragma :: { PExp L } > : '{-# CORE' STRING '#-}' exp { let Loc l (StringTok (s,_)) = $2 in CorePragma (nIS $1 <++> ann $4 <** [l,$3]) s $4 }@@ -1479,6 +1496,8 @@ > fexp :: { PExp L } > : fexp aexp { App ($1 <> $2) $1 $2 }+> | fexp expblockb {% checkEnabled BlockArguments >>+> return (App ($1 <> $2) $1 $2) } > | aexp { $1 } > apats :: { [Pat L] }@@ -1538,8 +1557,9 @@ > | '[' list ']' { amap (\l -> l <** [$3]) $ $2 ($1 <^^> $3 <** [$1]) } > | '[:' parr ':]' { amap (\l -> l <** [$3]) $ $2 ($1 <^^> $3 <** [$1]) } > | '(' erpats ')' {% checkEnabled RegularPatterns >> return (Paren ($1 <^^> $3 <** [$1,$3]) $2) }-> | '(|' sexps '|)' { SeqRP ($1 <^^> $3 <** ($1:reverse (snd $2) ++ [$3])) $ reverse (fst $2) }-> | '(|' exp '|' quals '|)' { GuardRP ($1 <^^> $5 <** ($1:$3 : snd $4 ++ [$5])) $2 $ (reverse $ fst $4) }+> | '(|' exp '|)' { ArrOp ($1 <^^> $3 <** [$1,$3]) $2 }+> | '(/' sexps '/)' { SeqRP ($1 <^^> $3 <** ($1:reverse (snd $2) ++ [$3])) $ reverse (fst $2) }+> | '(/' exp '|' quals '/)' { GuardRP ($1 <^^> $5 <** ($1:$3 : snd $4 ++ [$5])) $2 $ (reverse $ fst $4) } > | xml { $1 }
src/Language/Haskell/Exts/Lexer.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE Safe #-}+ ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.Lexer
src/Language/Haskell/Exts/ParseMonad.hs view
@@ -1,5 +1,6 @@-{-# LANGUAGE CPP #-}+{-# LANGUAGE CPP, Safe #-} {-# OPTIONS_HADDOCK hide #-}+ ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.ParseMonad@@ -48,7 +49,9 @@ import Control.Monad (when, liftM, ap) import qualified Control.Monad.Fail as Fail import Data.Monoid hiding ((<>))+#if !MIN_VERSION_base(4,13,0) import Data.Semigroup (Semigroup(..))+#endif -- To avoid import warnings for Control.Applicative, Data.Monoid, and Data.Semigroup import Prelude @@ -96,7 +99,6 @@ ParseFailed loc msg <*> _ = ParseFailed loc msg instance Monad ParseResult where- return = ParseOk #if !MIN_VERSION_base(4,13,0) fail = Fail.fail #endif@@ -112,7 +114,6 @@ instance ( Monoid m , Semigroup m) => Monoid (ParseResult m) where mempty = ParseOk mempty- mappend = (<>) -- internal version data ParseStatus a = Ok ParseState a | Failed SrcLoc String@@ -240,11 +241,10 @@ fmap = liftM instance Applicative P where- pure = return+ pure a = P $ \_i _x _y _l _ch s _m -> Ok s a (<*>) = ap instance Monad P where- return a = P $ \_i _x _y _l _ch s _m -> Ok s a P m >>= k = P $ \i x y l ch s mode -> case m i x y l ch s mode of Failed loc msg -> Failed loc msg@@ -352,11 +352,10 @@ fmap = liftM instance Applicative (Lex r) where- pure = return+ pure a = Lex $ \k -> k a (<*>) = ap instance Monad (Lex r) where- return a = Lex $ \k -> k a Lex v >>= f = Lex $ \k -> v (\a -> runL (f a) k) Lex v >> Lex w = Lex $ \k -> v (\_ -> w k) #if !MIN_VERSION_base(4,13,0)
src/Language/Haskell/Exts/ParseSyntax.hs view
@@ -101,6 +101,7 @@ | RightArrApp l (PExp l) (PExp l) -- ^ e >- e | LeftArrHighApp l (PExp l) (PExp l) -- ^ e -<< e | RightArrHighApp l (PExp l) (PExp l) -- ^ e >>- e+ | ArrOp l (PExp l) -- ^ (| e |) -- LambdaCase | LCase l [Alt l] -- ^ @\case@ /alts/@@ -183,6 +184,7 @@ RightArrApp l _ _ -> l LeftArrHighApp l _ _ -> l RightArrHighApp l _ _ -> l+ ArrOp l _ -> l LCase l _ -> l MultiIf l _ -> l@@ -255,6 +257,7 @@ RightArrApp l e1 e2 -> RightArrApp (f l) e1 e2 LeftArrHighApp l e1 e2 -> LeftArrHighApp (f l) e1 e2 RightArrHighApp l e1 e2 -> RightArrHighApp (f l) e1 e2+ ArrOp l e -> ArrOp (f l) e LCase l alts -> LCase (f l) alts MultiIf l alts -> MultiIf (f l) alts
src/Language/Haskell/Exts/ParseUtils.hs view
@@ -737,6 +737,7 @@ RightArrApp l e1 e2 -> check2Exprs e1 e2 (S.RightArrApp l) LeftArrHighApp l e1 e2 -> check2Exprs e1 e2 (S.LeftArrHighApp l) RightArrHighApp l e1 e2 -> check2Exprs e1 e2 (S.RightArrHighApp l)+ ArrOp l e -> S.ArrOp l <$> checkExpr e -- LamdaCase LCase l alts -> return $ S.LCase l alts
src/Language/Haskell/Exts/Parser.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE CPP, DeriveDataTypeable, FlexibleInstances, DeriveFunctor #-} {-# OPTIONS_GHC -fno-warn-orphans #-}+ ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.Annotated.Parser
src/Language/Haskell/Exts/Pretty.hs view
@@ -117,7 +117,6 @@ instance Monad (DocM s) where (>>=) = thenDocM (>>) = then_DocM- return = retDocM {-# INLINE thenDocM #-} {-# INLINE then_DocM #-}@@ -894,14 +893,25 @@ PromotedCon _ hasQuote qn -> addQuote hasQuote (pretty qn) PromotedList _ hasQuote list ->- addQuote hasQuote $ bracketList . punctuate comma . map pretty $ list+ addQuote hasQuote $ brackets . addSpace list . prettyList $ list PromotedTuple _ list ->- addQuote True $ parenList $ map pretty list+ addQuote True $ parens . addSpace list . prettyList $ list PromotedUnit {} -> addQuote True $ text "()" where addQuote True doc = char '\'' <> doc addQuote False doc = doc + checkQuote (PromotedCon _ q _) = q+ checkQuote (PromotedList _ q _) = q+ checkQuote (PromotedTuple _ _) = True+ checkQuote _ = False++ addSpace (TyPromoted _ l0:_) | checkQuote l0 = (space <>)+ addSpace _ = id++ prettyList = myFsepSimple . punctuate comma . map pretty++ instance Pretty (TyVarBind l) where pretty (KindedVar _ var kind) = parens $ myFsep [pretty var, text "::", pretty kind] pretty (UnkindedVar _ var) = pretty var@@ -1081,6 +1091,7 @@ prettyPrec p (RightArrApp _ l r) = parensIf (p > 0) $ myFsep [pretty l, text ">-", pretty r] prettyPrec p (LeftArrHighApp _ l r) = parensIf (p > 0) $ myFsep [pretty l, text "-<<", pretty r] prettyPrec p (RightArrHighApp _ l r) = parensIf (p > 0) $ myFsep [pretty l, text ">>-", pretty r]+ prettyPrec _ (ArrOp _ e) = myFsep [text "(|", pretty e, text "|)"] -- LamdaCase prettyPrec p (LCase _ altList) = parensIf (p > 1) $@@ -1626,6 +1637,7 @@ pretty (P.RightArrApp _ l r) = myFsep [pretty l, text ">-", pretty r] pretty (P.LeftArrHighApp _ l r) = myFsep [pretty l, text "-<<", pretty r] pretty (P.RightArrHighApp _ l r) = myFsep [pretty l, text ">>-", pretty r]+ pretty (P.ArrOp _ e) = myFsep [text "(|", pretty e, text "|)"] pretty (P.AsPat _ name (P.IrrPat _ pat)) = myFsep [pretty name <> char '@', char '~' <> pretty pat] pretty (P.AsPat _ name pat) =
src/Language/Haskell/Exts/SrcLoc.hs view
@@ -18,6 +18,10 @@ import Data.Data import GHC.Generics (Generic) +showInt :: Int -> String+showInt i | i < 0 = "(" ++ show i ++ ")"+showInt i = show i+ -- | A single position in the source. data SrcLoc = SrcLoc { srcFilename :: String@@ -29,7 +33,7 @@ instance Show SrcLoc where showsPrec n (SrcLoc fn sl sc) = showParen (n >= 11) $- showString $ "SrcLoc " ++ show fn ++ " " ++ unwords (map show [sl,sc])+ showString $ "SrcLoc " ++ show fn ++ " " ++ unwords (map showInt [sl,sc]) noLoc :: SrcLoc noLoc = SrcLoc "" (-1) (-1)@@ -47,7 +51,7 @@ instance Show SrcSpan where showsPrec n (SrcSpan fn sl sc el ec) = showParen (n >= 11) $- showString $ "SrcSpan " ++ show fn ++ " " ++ unwords (map show [sl,sc,el,ec])+ showString $ "SrcSpan " ++ show fn ++ " " ++ unwords (map showInt [sl,sc,el,ec]) -- | Returns 'srcSpanStartLine' and 'srcSpanStartColumn' in a pair.
src/Language/Haskell/Exts/Syntax.hs view
@@ -800,6 +800,7 @@ | RightArrApp l (Exp l) (Exp l) -- ^ arrow application (from right): /exp/ @>-@ /exp/ | LeftArrHighApp l (Exp l) (Exp l) -- ^ higher-order arrow application (from left): /exp/ @-<<@ /exp/ | RightArrHighApp l (Exp l) (Exp l) -- ^ higher-order arrow application (from right): /exp/ @>>-@ /exp/+ | ArrOp l (Exp l) -- ^ arrow control operators: @(| /exp/ |)@ -- LambdaCase | LCase l [Alt l] -- ^ @\case@ /alts/@@ -1655,6 +1656,7 @@ RightArrApp l _ _ -> l LeftArrHighApp l _ _ -> l RightArrHighApp l _ _ -> l+ ArrOp l _ -> l LCase l _ -> l @@ -1715,6 +1717,7 @@ RightArrApp l e1' e2 -> RightArrApp (f l) e1' e2 LeftArrHighApp l e1' e2 -> LeftArrHighApp (f l) e1' e2 RightArrHighApp l e1' e2 -> RightArrHighApp (f l) e1' e2+ ArrOp l e -> ArrOp (f l) e LCase l alts -> LCase (f l) alts MultiIf l alts -> MultiIf (f l) alts
src/Language/Preprocessor/Unlit.hs view
@@ -14,17 +14,17 @@ classify (('\\':x):xs) | x == "begin{code}" = Blank : allProg xs where allProg [] = [] -- Should give an error message, -- but I have no good position information.- allProg (('\\':x):xs) | "end{code}"`isPrefixOf`x = Blank : classify xs- allProg (x:xs) = Program x:allProg xs-classify (('>':x):xs) = Program (' ':x) : classify xs+ allProg (('\\':y):ys) | "end{code}" `isPrefixOf` y = Blank : classify ys+ allProg (y:ys) = Program y : allProg ys+classify (('>':x):xs) = Program (' ' : x) : classify xs classify (('#':x):xs) = (case words x of (line:rest) | all isDigit line -> Include (read line) (unwords rest) _ -> Pre x ) : classify xs --classify (x:xs) | "{-# LINE" `isPrefixOf` x = Program x: classify xs-classify (x:xs) | all isSpace x = Blank:classify xs-classify (x:xs) = Comment:classify xs+classify (x:xs) | all isSpace x = Blank : classify xs+classify (_:xs) = Comment : classify xs unclassify :: Classified -> String unclassify (Program s) = s@@ -43,16 +43,16 @@ adjacent :: FilePath -> Int -> Classified -> [Classified] -> [Classified] adjacent file 0 _ (x :xs) = x : adjacent file 1 x xs -- force evaluation of line number-adjacent file n y@(Program _) (x@Comment :xs) = error (message file n "program" "comment")-adjacent file n y@(Program _) (x@(Include i f):xs) = x: adjacent f i y xs+adjacent file n (Program _) (Comment :_ ) = error (message file n "program" "comment")+adjacent _ _ y@(Program _) (x@(Include i f):xs) = x: adjacent f i y xs adjacent file n y@(Program _) (x@(Pre _) :xs) = x: adjacent file (n+1) y xs-adjacent file n y@Comment (x@(Program _) :xs) = error (message file n "comment" "program")-adjacent file n y@Comment (x@(Include i f):xs) = x: adjacent f i y xs+adjacent file n Comment ( (Program _) :_ ) = error (message file n "comment" "program")+adjacent _ _ y@Comment (x@(Include i f):xs) = x: adjacent f i y xs adjacent file n y@Comment (x@(Pre _) :xs) = x: adjacent file (n+1) y xs-adjacent file n y@Blank (x@(Include i f):xs) = x: adjacent f i y xs+adjacent _ _ y@Blank (x@(Include i f):xs) = x: adjacent f i y xs adjacent file n y@Blank (x@(Pre _) :xs) = x: adjacent file (n+1) y xs-adjacent file n _ (x@next :xs) = x: adjacent file (n+1) x xs-adjacent file n _ [] = []+adjacent file n _ (x :xs) = x: adjacent file (n+1) x xs+adjacent _ _ _ [] = [] message :: String -> Int -> String -> String -> String message "\"\"" n p c = "Line "++show n++": "++p++ " line before "++c++" line.\n"@@ -63,7 +63,7 @@ -- Re-implementation of 'lines', for better efficiency (but decreased laziness). -- Also, importantly, accepts non-standard DOS and Mac line ending characters. inlines :: String -> [String]-inlines s = lines' s id+inlines = (`lines'` id) where lines' [] acc = [acc []] lines' ('\^M':'\n':s) acc = acc [] : lines' s id -- DOS
tests/Extensions.hs view
@@ -22,12 +22,30 @@ (~~) :: Monad m => [Extension] -> [Extension] -> Property m xts1 ~~ xts2 = forAll $ \lang -> ((==) `on` sort . toExtensionList lang) xts1 xts2 +-- arbitrary examples+e1 :: KnownExtension+e1 = OverlappingInstances++e2 :: KnownExtension+e2 = UndecidableInstances+ extensionProperties :: TestTree extensionProperties = localOption (SmallCheckDepth 2) $ testGroup "Properties of LANGUAGE extensions" $ [ testProperty "identity" $ \x -> x ~~ x , testProperty "idempotence" $ \x -> x ++ x ~~ x- , testProperty "right bias" $ \x y -> x ++ y ++ x ~~ y ++ x+ -- Actually, let's not exhaustively check n^2 cases+ -- , testProperty "right bias" $ \x y -> x ++ y ++ x ~~ y ++ x+ , testProperty "right bias - override to disabled" $+ [EnableExtension e1, DisableExtension e1] ~~ [DisableExtension e1]+ , testProperty "right bias - override to enabled" $+ [DisableExtension e1, EnableExtension e1] ~~ [EnableExtension e1]+ , testProperty "right bias - interleaved override to disabled" $+ [EnableExtension e1, EnableExtension e2, DisableExtension e1]+ ~~ [EnableExtension e2, DisableExtension e1]+ , testProperty "right bias - interleaved override to enabled" $+ [DisableExtension e1, EnableExtension e2, EnableExtension e1]+ ~~ [EnableExtension e2, EnableExtension e1] , testProperty "closedness of implication" $ \x -> impliesExts (impliesExts x) == impliesExts x , testProperty "closedness of toExtensionList" $ \l x -> let es = toExtensionList l x in es == impliesExts es , testProperty "opposite extensions 1" $ \x -> [EnableExtension x, DisableExtension x] ~~ [DisableExtension x]
tests/Runner.hs view
@@ -180,7 +180,9 @@ readUTF8File :: FilePath -> IO String readUTF8File fp = openFile fp ReadMode >>= \h -> do hSetEncoding h utf8- hGetContents h+ c <- hGetContents h >>= \s -> length s `seq` return s+ hClose h+ return c parseUTF8FileWithComments :: ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo, [Comment])) parseUTF8FileWithComments p fp = readUTF8File fp >>= (return . parseFileContentsWithComments p)
tests/examples/AmbiguousFixities.hs.exactprinter.golden view
@@ -1,1 +1,1 @@-ParseFailed (SrcLoc "" -1 -1) "Ambiguous infix expression"+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
tests/examples/AmbiguousFixities.hs.prettyparser.golden view
@@ -1,1 +1,1 @@-ParseFailed (SrcLoc "" -1 -1) "Ambiguous infix expression"+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
tests/examples/AmbiguousFixities.hs.prettyprinter.golden view
@@ -1,1 +1,1 @@-ParseFailed (SrcLoc "" -1 -1) "Ambiguous infix expression"+ParseFailed (SrcLoc "" (-1) (-1)) "Ambiguous infix expression"
+ tests/examples/ArrowBrackets.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE Arrows #-}+module ArrowBrackets where++foo = proc (x, y) -> (| f (g -< x) |) y++bar = proc (x, y) -> do+ z <- (| f (g -< x) |) y+ (| f (h -< z) |) y
+ tests/examples/ArrowBrackets.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ArrowBrackets.hs.parser.golden view
@@ -0,0 +1,541 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 1 1 9 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 1 1 1 1+ , SrcSpan "tests/examples/ArrowBrackets.hs" 2 1 2 1+ , SrcSpan "tests/examples/ArrowBrackets.hs" 2 1 2 1+ , SrcSpan "tests/examples/ArrowBrackets.hs" 4 1 4 1+ , SrcSpan "tests/examples/ArrowBrackets.hs" 6 1 6 1+ , SrcSpan "tests/examples/ArrowBrackets.hs" 9 1 9 1+ , SrcSpan "tests/examples/ArrowBrackets.hs" 9 1 9 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 2 1 2 7+ , SrcSpan "tests/examples/ArrowBrackets.hs" 2 22 2 27+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 2 8 2 21+ , srcInfoPoints = []+ }+ "ArrowBrackets")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 1 1 1 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 1 1 1 13+ , SrcSpan "tests/examples/ArrowBrackets.hs" 1 21 1 24+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 1 14 1 20+ , srcInfoPoints = []+ }+ "Arrows"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 1 4 40+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 5 4 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 5 4 6 ]+ }+ (Proc+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 7 4 40+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 7 4 11+ , SrcSpan "tests/examples/ArrowBrackets.hs" 4 19 4 21+ ]+ }+ (PTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 12 4 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 12 4 13+ , SrcSpan "tests/examples/ArrowBrackets.hs" 4 14 4 15+ , SrcSpan "tests/examples/ArrowBrackets.hs" 4 17 4 18+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 16 4 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 16 4 17+ , srcInfoPoints = []+ }+ "y")+ ])+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 22 4 40+ , srcInfoPoints = []+ }+ (ArrOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 22 4 38+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 22 4 24+ , SrcSpan "tests/examples/ArrowBrackets.hs" 4 36 4 38+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 25 4 35+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 25 4 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 25 4 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 4 25 4 26+ , srcInfoPoints = []+ }+ "f")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 27 4 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 27 4 28+ , SrcSpan "tests/examples/ArrowBrackets.hs" 4 34 4 35+ ]+ }+ (LeftArrApp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 28 4 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 4 30 4 32 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 4 28 4 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 4 28 4 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 4 28 4 29+ , srcInfoPoints = []+ }+ "g")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 4 33 4 34+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 4 33 4 34+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 4 33 4 34+ , srcInfoPoints = []+ }+ "x")))))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 39 4 40+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 39 4 40+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 4 39 4 40+ , srcInfoPoints = []+ }+ "y"))))))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 1 8 21+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 1 6 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 1 6 4+ , srcInfoPoints = []+ }+ "bar"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 5 8 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 6 5 6 6 ]+ }+ (Proc+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 7 8 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 6 7 6 11+ , SrcSpan "tests/examples/ArrowBrackets.hs" 6 19 6 21+ ]+ }+ (PTuple+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 12 6 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 6 12 6 13+ , SrcSpan "tests/examples/ArrowBrackets.hs" 6 14 6 15+ , SrcSpan "tests/examples/ArrowBrackets.hs" 6 17 6 18+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 13 6 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 13 6 14+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 16 6 17+ , srcInfoPoints = []+ }+ "y")+ ])+ (Do+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 6 22 8 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 6 22 6 24+ , SrcSpan "tests/examples/ArrowBrackets.hs" 7 3 7 3+ , SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 3+ , SrcSpan "tests/examples/ArrowBrackets.hs" 9 1 9 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 3 7 26+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 7 5 7 7 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 3 7 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 3 7 4+ , srcInfoPoints = []+ }+ "z"))+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 8 7 26+ , srcInfoPoints = []+ }+ (ArrOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 8 7 24+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 7 8 7 10+ , SrcSpan "tests/examples/ArrowBrackets.hs" 7 22 7 24+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 7 11 7 21+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 7 11 7 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 7 11 7 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 7 11 7 12+ , srcInfoPoints = []+ }+ "f")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 7 13 7 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 7 13 7 14+ , SrcSpan "tests/examples/ArrowBrackets.hs" 7 20 7 21+ ]+ }+ (LeftArrApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 7 14 7 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 7 16 7 18 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ArrowBrackets.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ArrowBrackets.hs" 7 14 7 15+ , srcInfoPoints = []+ }+ "g")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 7 19 7 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ArrowBrackets.hs" 7 19 7 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ArrowBrackets.hs" 7 19 7 20+ , srcInfoPoints = []+ }+ "x")))))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 7 25 7 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 7 25 7 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 7 25 7 26+ , srcInfoPoints = []+ }+ "y"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 21+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 21+ , srcInfoPoints = []+ }+ (ArrOp+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 8 3 8 5+ , SrcSpan "tests/examples/ArrowBrackets.hs" 8 17 8 19+ ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 6 8 16+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 8 6 8 7+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 8 6 8 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 8 6 8 7+ , srcInfoPoints = []+ }+ "f")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 8 8 8 16+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 8 8 8 9+ , SrcSpan "tests/examples/ArrowBrackets.hs" 8 15 8 16+ ]+ }+ (LeftArrApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 8 9 8 15+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ArrowBrackets.hs" 8 11 8 13 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 8 9 8 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 8 9 8 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ArrowBrackets.hs" 8 9 8 10+ , srcInfoPoints = []+ }+ "h")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ArrowBrackets.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/ArrowBrackets.hs" 8 14 8 15+ , srcInfoPoints = []+ }+ "z")))))))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/ArrowBrackets.hs" 8 20 8 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 8 20 8 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ArrowBrackets.hs" 8 20 8 21+ , srcInfoPoints = []+ }+ "y"))))+ ])))+ Nothing+ ]+ , []+ )
+ tests/examples/ArrowBrackets.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ArrowBrackets.hs.prettyprinter.golden view
@@ -0,0 +1,7 @@+{-# LANGUAGE Arrows #-}+module ArrowBrackets where+foo = proc (x, y) -> (| f (g -< x) |) y+bar+ = proc (x, y) ->+ do z <- (| f (g -< x) |) y+ (| f (h -< z) |) y
+ tests/examples/BlockArguments.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE BlockArguments #-}+module BlockArguments where++foo = when (x > 0) do+ print x+ exitFailure++bar = withForeignPtr fptr \ptr -> c_memcpy buf ptr size++baz arg1 arg2 arg3 arg4 = initialValue+ & someFunction arg1 arg2+ >>= traverse \(x, y) -> do+ a <- f x+ b <- g y+ h a b+ >>= anotherFunction arg3 arg4
+ tests/examples/BlockArguments.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/BlockArguments.hs.parser.golden view
@@ -0,0 +1,1099 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 1 1 17 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 1 1 1 1+ , SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 1+ , SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 1+ , SrcSpan "tests/examples/BlockArguments.hs" 4 1 4 1+ , SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 1+ , SrcSpan "tests/examples/BlockArguments.hs" 10 1 10 1+ , SrcSpan "tests/examples/BlockArguments.hs" 17 1 17 1+ , SrcSpan "tests/examples/BlockArguments.hs" 17 1 17 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 28+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 2 1 2 7+ , SrcSpan "tests/examples/BlockArguments.hs" 2 23 2 28+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 2 8 2 22+ , srcInfoPoints = []+ }+ "BlockArguments")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 1 1 1 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 1 1 1 13+ , SrcSpan "tests/examples/BlockArguments.hs" 1 29 1 32+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 1 14 1 28+ , srcInfoPoints = []+ }+ "BlockArguments"+ ]+ ]+ []+ [ PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 1 6 14+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 1 4 4+ , srcInfoPoints = []+ }+ "foo"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 5 6 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 4 5 4 6 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 6 14+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 19+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 11+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 11+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 4 7 4 11+ , srcInfoPoints = []+ }+ "when")))+ (Paren+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 12 4 19+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 4 12 4 13+ , SrcSpan "tests/examples/BlockArguments.hs" 4 18 4 19+ ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 18+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 13 4 14+ , srcInfoPoints = []+ }+ "x")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 15 4 16+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 15 4 16+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 15 4 16+ , srcInfoPoints = []+ }+ ">")))+ (Lit+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 17 4 18+ , srcInfoPoints = []+ }+ (Int+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 17 4 18+ , srcInfoPoints = []+ }+ 0+ "0")))))+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 4 20 6 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 4 20 4 22+ , SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 3+ , SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 3+ , SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 0+ ]+ }+ [ Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 10+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 10+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 8+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 8+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 5 3 5 8+ , srcInfoPoints = []+ }+ "print")))+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 5 9 5 10+ , srcInfoPoints = []+ }+ "x"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 6 3 6 14+ , srcInfoPoints = []+ }+ "exitFailure")))+ ])))+ Nothing+ , PatBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 56+ , srcInfoPoints = []+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 4+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 1 8 4+ , srcInfoPoints = []+ }+ "bar"))+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 5 8 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 8 5 8 6 ]+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 56+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 26+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 21+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 21+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/BlockArguments.hs" 8 7 8 21+ , srcInfoPoints = []+ }+ "withForeignPtr")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 22 8 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 22 8 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 22 8 26+ , srcInfoPoints = []+ }+ "fptr"))))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 27 8 56+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 8 27 8 28+ , SrcSpan "tests/examples/BlockArguments.hs" 8 32 8 34+ ]+ }+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 28 8 31+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 28 8 31+ , srcInfoPoints = []+ }+ "ptr")+ ]+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 56+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 51+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 47+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 43+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 43+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 35 8 43+ , srcInfoPoints = []+ }+ "c_memcpy")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 44 8 47+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 44 8 47+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 44 8 47+ , srcInfoPoints = []+ }+ "buf"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 48 8 51+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 48 8 51+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 48 8 51+ , srcInfoPoints = []+ }+ "ptr"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 52 8 56+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 52 8 56+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 8 52 8 56+ , srcInfoPoints = []+ }+ "size")))))))+ Nothing+ , FunBind+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 1 16 32+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 1 16 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 1 10 4+ , srcInfoPoints = []+ }+ "baz")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 5 10 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 5 10 9+ , srcInfoPoints = []+ }+ "arg1")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 10 10 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 10 10 14+ , srcInfoPoints = []+ }+ "arg2")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 15 10 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 15 10 19+ , srcInfoPoints = []+ }+ "arg3")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 20 10 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 20 10 24+ , srcInfoPoints = []+ }+ "arg4")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 25 16 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 10 25 10 26 ]+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 27 16 32+ , srcInfoPoints = []+ }+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 27 11 29+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 27 10 39+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 27 10 39+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 10 27 10 39+ , srcInfoPoints = []+ }+ "initialValue")))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 3 11 4+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 3 11 4+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 3 11 4+ , srcInfoPoints = []+ }+ "&")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 29+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 24+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 19+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 7 11 19+ , srcInfoPoints = []+ }+ "someFunction")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 20 11 24+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 20 11 24+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 20 11 24+ , srcInfoPoints = []+ }+ "arg1"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 25 11 29+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 25 11 29+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 11 25 11 29+ , srcInfoPoints = []+ }+ "arg2")))))+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 3 12 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 3 12 6+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 3 12 6+ , srcInfoPoints = []+ }+ ">>=")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 7 16 32+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 7 12 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 7 12 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 7 12 15+ , srcInfoPoints = []+ }+ "traverse")))+ (Lambda+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 16 16 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 12 16 12 17+ , SrcSpan "tests/examples/BlockArguments.hs" 12 24 12 26+ ]+ }+ [ PTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 17 12 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 12 17 12 18+ , SrcSpan "tests/examples/BlockArguments.hs" 12 19 12 20+ , SrcSpan "tests/examples/BlockArguments.hs" 12 22 12 23+ ]+ }+ Boxed+ [ PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 18 12 19+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 18 12 19+ , srcInfoPoints = []+ }+ "x")+ , PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 21 12 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 21 12 22+ , srcInfoPoints = []+ }+ "y")+ ]+ ]+ (InfixApp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 27 16 32+ , srcInfoPoints = []+ }+ (Do+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 12 27 15 14+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 12 27 12 29+ , SrcSpan "tests/examples/BlockArguments.hs" 13 9 13 9+ , SrcSpan "tests/examples/BlockArguments.hs" 14 9 14 9+ , SrcSpan "tests/examples/BlockArguments.hs" 15 9 15 9+ , SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 0+ ]+ }+ [ Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 13 9 13 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 13 11 13 13 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 13 9 13 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 13 9 13 10+ , srcInfoPoints = []+ }+ "a"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 13 14 13 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 13 14 13 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 13 14 13 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 13+ 14+ 13+ 15+ , srcInfoPoints = []+ }+ "f")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 13 16 13 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 13 16 13 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 13+ 16+ 13+ 17+ , srcInfoPoints = []+ }+ "x"))))+ , Generator+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 14 9 14 17+ , srcInfoPoints =+ [ SrcSpan "tests/examples/BlockArguments.hs" 14 11 14 13 ]+ }+ (PVar+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 14 9 14 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 14 9 14 10+ , srcInfoPoints = []+ }+ "b"))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 14 14 14 17+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 14 14 14 15+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 14 14 14 15+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 14+ 14+ 14+ 15+ , srcInfoPoints = []+ }+ "g")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 14 16 14 17+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 14 16 14 17+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 14+ 16+ 14+ 17+ , srcInfoPoints = []+ }+ "y"))))+ , Qualifier+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 15 9 15 14+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 15 9 15 14+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 15 9 15 12+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 15 9 15 10+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 15+ 9+ 15+ 10+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 15+ 9+ 15+ 10+ , srcInfoPoints = []+ }+ "h")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 15 11 15 12+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 15+ 11+ 15+ 12+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 15+ 11+ 15+ 12+ , srcInfoPoints = []+ }+ "a"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 15 13 15 14+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 15 13 15 14+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs"+ 15+ 13+ 15+ 14+ , srcInfoPoints = []+ }+ "b"))))+ ])+ (QVarOp+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 6+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 6+ , srcInfoPoints = []+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 3 16 6+ , srcInfoPoints = []+ }+ ">>=")))+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 32+ , srcInfoPoints = []+ }+ (App+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 27+ , srcInfoPoints = []+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 22+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 7 16 22+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 16 7 16 22+ , srcInfoPoints = []+ }+ "anotherFunction")))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 23 16 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 16 23 16 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 16 23 16 27+ , srcInfoPoints = []+ }+ "arg3"))))+ (Var+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 28 16 32+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/BlockArguments.hs" 16 28 16 32+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan+ "tests/examples/BlockArguments.hs" 16 28 16 32+ , srcInfoPoints = []+ }+ "arg4")))))))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/BlockArguments.hs.prettyparser.golden view
@@ -0,0 +1,10 @@+Roundtrip test failed++AST 1:++Module () (Just (ModuleHead () (ModuleName () "BlockArguments") Nothing Nothing)) [LanguagePragma () [Ident () "BlockArguments"]] [] [PatBind () (PVar () (Ident () "foo")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "x"))) (QVarOp () (UnQual () (Symbol () ">"))) (Lit () (Int () 0 "0"))))) (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (Var () (UnQual () (Ident () "x")))),Qualifier () (Var () (UnQual () (Ident () "exitFailure")))]))) Nothing,PatBind () (PVar () (Ident () "bar")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fptr")))) (Lambda () [PVar () (Ident () "ptr")] (App () (App () (App () (Var () (UnQual () (Ident () "c_memcpy"))) (Var () (UnQual () (Ident () "buf")))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "size"))))))) Nothing,FunBind () [Match () (Ident () "baz") [PVar () (Ident () "arg1"),PVar () (Ident () "arg2"),PVar () (Ident () "arg3"),PVar () (Ident () "arg4")] (UnGuardedRhs () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "initialValue"))) (QVarOp () (UnQual () (Symbol () "&"))) (App () (App () (Var () (UnQual () (Ident () "someFunction"))) (Var () (UnQual () (Ident () "arg1")))) (Var () (UnQual () (Ident () "arg2"))))) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (Var () (UnQual () (Ident () "traverse"))) (Lambda () [PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "y")]] (InfixApp () (Do () [Generator () (PVar () (Ident () "a")) (App () (Var () (UnQual () (Ident () "f"))) (Var () (UnQual () (Ident () "x")))),Generator () (PVar () (Ident () "b")) (App () (Var () (UnQual () (Ident () "g"))) (Var () (UnQual () (Ident () "y")))),Qualifier () (App () (App () (Var () (UnQual () (Ident () "h"))) (Var () (UnQual () (Ident () "a")))) (Var () (UnQual () (Ident () "b"))))]) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (App () (Var () (UnQual () (Ident () "anotherFunction"))) (Var () (UnQual () (Ident () "arg3")))) (Var () (UnQual () (Ident () "arg4"))))))))) Nothing]]++AST 2:++Module () (Just (ModuleHead () (ModuleName () "BlockArguments") Nothing Nothing)) [LanguagePragma () [Ident () "BlockArguments"]] [] [PatBind () (PVar () (Ident () "foo")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "when"))) (Paren () (InfixApp () (Var () (UnQual () (Ident () "x"))) (QVarOp () (UnQual () (Symbol () ">"))) (Lit () (Int () 0 "0"))))) (Paren () (Do () [Qualifier () (App () (Var () (UnQual () (Ident () "print"))) (Var () (UnQual () (Ident () "x")))),Qualifier () (Var () (UnQual () (Ident () "exitFailure")))])))) Nothing,PatBind () (PVar () (Ident () "bar")) (UnGuardedRhs () (App () (App () (Var () (UnQual () (Ident () "withForeignPtr"))) (Var () (UnQual () (Ident () "fptr")))) (Paren () (Lambda () [PVar () (Ident () "ptr")] (App () (App () (App () (Var () (UnQual () (Ident () "c_memcpy"))) (Var () (UnQual () (Ident () "buf")))) (Var () (UnQual () (Ident () "ptr")))) (Var () (UnQual () (Ident () "size")))))))) Nothing,FunBind () [Match () (Ident () "baz") [PVar () (Ident () "arg1"),PVar () (Ident () "arg2"),PVar () (Ident () "arg3"),PVar () (Ident () "arg4")] (UnGuardedRhs () (InfixApp () (InfixApp () (Var () (UnQual () (Ident () "initialValue"))) (QVarOp () (UnQual () (Symbol () "&"))) (App () (App () (Var () (UnQual () (Ident () "someFunction"))) (Var () (UnQual () (Ident () "arg1")))) (Var () (UnQual () (Ident () "arg2"))))) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (Var () (UnQual () (Ident () "traverse"))) (Paren () (Lambda () [PTuple () Boxed [PVar () (Ident () "x"),PVar () (Ident () "y")]] (InfixApp () (Do () [Generator () (PVar () (Ident () "a")) (App () (Var () (UnQual () (Ident () "f"))) (Var () (UnQual () (Ident () "x")))),Generator () (PVar () (Ident () "b")) (App () (Var () (UnQual () (Ident () "g"))) (Var () (UnQual () (Ident () "y")))),Qualifier () (App () (App () (Var () (UnQual () (Ident () "h"))) (Var () (UnQual () (Ident () "a")))) (Var () (UnQual () (Ident () "b"))))]) (QVarOp () (UnQual () (Symbol () ">>="))) (App () (App () (Var () (UnQual () (Ident () "anotherFunction"))) (Var () (UnQual () (Ident () "arg3")))) (Var () (UnQual () (Ident () "arg4")))))))))) Nothing]]+
+ tests/examples/BlockArguments.hs.prettyprinter.golden view
@@ -0,0 +1,15 @@+{-# LANGUAGE BlockArguments #-}+module BlockArguments where+foo+ = when (x > 0)+ (do print x+ exitFailure)+bar = withForeignPtr fptr (\ ptr -> c_memcpy buf ptr size)+baz arg1 arg2 arg3 arg4+ = initialValue & someFunction arg1 arg2 >>=+ traverse+ (\ (x, y) ->+ do a <- f x+ b <- g y+ h a b+ >>= anotherFunction arg3 arg4)
+ tests/examples/ImportQualifiedPost.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE ImportQualifiedPost #-}+module ImportQualifiedPost where++import Data.List qualified as L
+ tests/examples/ImportQualifiedPost.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ImportQualifiedPost.hs.parser.golden view
@@ -0,0 +1,89 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 1 1+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 1+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 1+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 1 4 1+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 5 1 5 1+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 33+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 1 2 7+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 28 2 33+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 2 8 2 27+ , srcInfoPoints = []+ }+ "ImportQualifiedPost")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 1 37+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 1 1 13+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 34 1 37+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 1 14 1 33+ , srcInfoPoints = []+ }+ "ImportQualifiedPost"+ ]+ ]+ [ ImportDecl+ { importAnn =+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 1 4 32+ , srcInfoPoints =+ [ SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 1 4 7+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 18 4 27+ , SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 28 4 30+ ]+ }+ , importModule =+ ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 8 4 17+ , srcInfoPoints = []+ }+ "Data.List"+ , importQualified = True+ , importSrc = False+ , importSafe = False+ , importPkg = Nothing+ , importAs =+ Just+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/ImportQualifiedPost.hs" 4 31 4 32+ , srcInfoPoints = []+ }+ "L")+ , importSpecs = Nothing+ }+ ]+ []+ , []+ )
+ tests/examples/ImportQualifiedPost.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/ImportQualifiedPost.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE ImportQualifiedPost #-}+module ImportQualifiedPost where+import qualified Data.List as L
+ tests/examples/PromotedSpace.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE DataKinds #-}+module PromotedSpace where++-- Promoted list containing promoted constructor with quote+type PL1 = '[ 'True ]++-- Promoted list containing promoted list+type PL2 = '[ '[Int] ]++-- Promoted list containing promoted tuple+type PL3 = '[ '(Int, Bool) ]++-- Promoted tuple containing promoted constructor with quote+type PT1 = '( 'True, False )++-- Promoted tuple containing promoted list+type PT2 = '( '[Int], Bool )++-- Promoted tuple containing promoted tuple+type PT3 = '( '(Int, Bool), Char )
+ tests/examples/PromotedSpace.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PromotedSpace.hs.parser.golden view
@@ -0,0 +1,617 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 1 1 21 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 1 1 1 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 5 1 5 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 8 1 8 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 1 11 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 14 1 14 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 1 17 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 1 20 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 21 1 21 1+ , SrcSpan "tests/examples/PromotedSpace.hs" 21 1 21 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 2 1 2 7+ , SrcSpan "tests/examples/PromotedSpace.hs" 2 22 2 27+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 2 8 2 21+ , srcInfoPoints = []+ }+ "PromotedSpace")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 1 1 1 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 1 1 1 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 1 24 1 27+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 1 14 1 23+ , srcInfoPoints = []+ }+ "DataKinds"+ ]+ ]+ []+ [ TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 1 5 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 5 1 5 5+ , SrcSpan "tests/examples/PromotedSpace.hs" 5 10 5 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 6 5 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 6 5 9+ , srcInfoPoints = []+ }+ "PL1"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 5 21 5 22+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 22+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 5 12 5 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 5 21 5 22+ ]+ }+ True+ [ TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 16 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 5 15 5 16 ]+ }+ True+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 16 5 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 5 16 5 20+ , srcInfoPoints = []+ }+ "True")))+ ]))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 1 8 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 8 1 8 5+ , SrcSpan "tests/examples/PromotedSpace.hs" 8 10 8 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 6 8 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 6 8 9+ , srcInfoPoints = []+ }+ "PL2"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 8 22 8 23+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 23+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 8 12 8 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 8 22 8 23+ ]+ }+ True+ [ TyPromoted+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 8 20 8 21+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 8 15 8 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 8 20 8 21+ ]+ }+ True+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 17 8 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 8 17 8 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 8 17 8 20+ , srcInfoPoints = []+ }+ "Int"))+ ])+ ]))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 1 11 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 11 1 11 5+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 10 11 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 11 6 11 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 11 6 11 9+ , srcInfoPoints = []+ }+ "PL3"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 28 11 29+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 11 12 11 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 28 11 29+ ]+ }+ True+ [ TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 20 11 21+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 26 11 27+ ]+ }+ (PromotedTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 11 15 11 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 20 11 21+ , SrcSpan "tests/examples/PromotedSpace.hs" 11 26 11 27+ ]+ }+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 17 11 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 17 11 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 17 11 20+ , srcInfoPoints = []+ }+ "Int"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 22 11 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 22 11 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 11 22 11 26+ , srcInfoPoints = []+ }+ "Bool"))+ ])+ ]))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 1 14 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 14 1 14 5+ , SrcSpan "tests/examples/PromotedSpace.hs" 14 10 14 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 14 6 14 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 14 6 14 9+ , srcInfoPoints = []+ }+ "PT1"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 14 20 14 21+ , SrcSpan "tests/examples/PromotedSpace.hs" 14 28 14 29+ ]+ }+ (PromotedTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 14 12 14 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 14 20 14 21+ , SrcSpan "tests/examples/PromotedSpace.hs" 14 28 14 29+ ]+ }+ [ TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 16 ]+ }+ (PromotedCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 20+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 14 15 14 16 ]+ }+ True+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 16 14 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 16 14 20+ , srcInfoPoints = []+ }+ "True")))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 22 14 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 22 14 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 14 22 14 27+ , srcInfoPoints = []+ }+ "False"))+ ]))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 1 17 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 17 1 17 5+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 10 17 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 17 6 17 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 17 6 17 9+ , srcInfoPoints = []+ }+ "PT2"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 21 17 22+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 28 17 29+ ]+ }+ (PromotedTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 29+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 17 12 17 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 21 17 22+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 28 17 29+ ]+ }+ [ TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 20 17 21+ ]+ }+ (PromotedList+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 21+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 17 15 17 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 17 20 17 21+ ]+ }+ True+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 17 17 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 17 17 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 17 17 20+ , srcInfoPoints = []+ }+ "Int"))+ ])+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 23 17 27+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 23 17 27+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 17 23 17 27+ , srcInfoPoints = []+ }+ "Bool"))+ ]))+ , TypeDecl+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 1 20 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 20 1 20 5+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 10 20 11+ ]+ }+ (DHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 20 6 20 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/PromotedSpace.hs" 20 6 20 9+ , srcInfoPoints = []+ }+ "PT3"))+ (TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 27 20 28+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 34 20 35+ ]+ }+ (PromotedTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 35+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 20 12 20 13+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 27 20 28+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 34 20 35+ ]+ }+ [ TyPromoted+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 20 20 21+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 26 20 27+ ]+ }+ (PromotedTuple+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 27+ , srcInfoPoints =+ [ SrcSpan "tests/examples/PromotedSpace.hs" 20 15 20 16+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 20 20 21+ , SrcSpan "tests/examples/PromotedSpace.hs" 20 26 20 27+ ]+ }+ [ TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 17 20 20+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 17 20 20+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 17 20 20+ , srcInfoPoints = []+ }+ "Int"))+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 22 20 26+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 22 20 26+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 22 20 26+ , srcInfoPoints = []+ }+ "Bool"))+ ])+ , TyCon+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 29 20 33+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 29 20 33+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan =+ SrcSpan "tests/examples/PromotedSpace.hs" 20 29 20 33+ , srcInfoPoints = []+ }+ "Char"))+ ]))+ ]+ , [ Comment+ False+ (SrcSpan "tests/examples/PromotedSpace.hs" 4 1 4 60)+ " Promoted list containing promoted constructor with quote"+ , Comment+ False+ (SrcSpan "tests/examples/PromotedSpace.hs" 7 1 7 42)+ " Promoted list containing promoted list"+ , Comment+ False+ (SrcSpan "tests/examples/PromotedSpace.hs" 10 1 10 43)+ " Promoted list containing promoted tuple"+ , Comment+ False+ (SrcSpan "tests/examples/PromotedSpace.hs" 13 1 13 61)+ " Promoted tuple containing promoted constructor with quote"+ , Comment+ False+ (SrcSpan "tests/examples/PromotedSpace.hs" 16 1 16 43)+ " Promoted tuple containing promoted list"+ , Comment+ False+ (SrcSpan "tests/examples/PromotedSpace.hs" 19 1 19 44)+ " Promoted tuple containing promoted tuple"+ ]+ )
+ tests/examples/PromotedSpace.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/PromotedSpace.hs.prettyprinter.golden view
@@ -0,0 +1,14 @@+{-# LANGUAGE DataKinds #-}+module PromotedSpace where++type PL1 = '[ 'True]++type PL2 = '[ '[Int]]++type PL3 = '[ '(Int, Bool)]++type PT1 = '( 'True, False)++type PT2 = '( '[Int], Bool)++type PT3 = '( '(Int, Bool), Char)
+ tests/examples/T326.hs view
@@ -0,0 +1,4 @@+{-# LANGUAGE TypeApplications #-}+module T326 where++(@:) a b = a
+ tests/examples/T326.hs.exactprinter.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T326.hs.parser.golden view
@@ -0,0 +1,116 @@+ParseOk+ ( Module+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 1 1 5 1+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T326.hs" 1 1 1 1+ , SrcSpan "tests/examples/T326.hs" 2 1 2 1+ , SrcSpan "tests/examples/T326.hs" 2 1 2 1+ , SrcSpan "tests/examples/T326.hs" 4 1 4 1+ , SrcSpan "tests/examples/T326.hs" 5 1 5 1+ , SrcSpan "tests/examples/T326.hs" 5 1 5 1+ ]+ }+ (Just+ (ModuleHead+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 2 1 2 18+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T326.hs" 2 1 2 7+ , SrcSpan "tests/examples/T326.hs" 2 13 2 18+ ]+ }+ (ModuleName+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 2 8 2 12+ , srcInfoPoints = []+ }+ "T326")+ Nothing+ Nothing))+ [ LanguagePragma+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 1 1 1 34+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T326.hs" 1 1 1 13+ , SrcSpan "tests/examples/T326.hs" 1 31 1 34+ ]+ }+ [ Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 1 14 1 30+ , srcInfoPoints = []+ }+ "TypeApplications"+ ]+ ]+ []+ [ FunBind+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 1 4 13+ , srcInfoPoints = []+ }+ [ Match+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 1 4 13+ , srcInfoPoints =+ [ SrcSpan "tests/examples/T326.hs" 4 1 4 2+ , SrcSpan "tests/examples/T326.hs" 4 2 4 4+ , SrcSpan "tests/examples/T326.hs" 4 4 4 5+ ]+ }+ (Symbol+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 2 4 4+ , srcInfoPoints = []+ }+ "@:")+ [ PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 6 4 7+ , srcInfoPoints = []+ }+ "a")+ , PVar+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 8 4 9+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 8 4 9+ , srcInfoPoints = []+ }+ "b")+ ]+ (UnGuardedRhs+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 10 4 13+ , srcInfoPoints = [ SrcSpan "tests/examples/T326.hs" 4 10 4 11 ]+ }+ (Var+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ (UnQual+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ (Ident+ SrcSpanInfo+ { srcInfoSpan = SrcSpan "tests/examples/T326.hs" 4 12 4 13+ , srcInfoPoints = []+ }+ "a"))))+ Nothing+ ]+ ]+ , []+ )
+ tests/examples/T326.hs.prettyparser.golden view
@@ -0,0 +1,1 @@+Match
+ tests/examples/T326.hs.prettyprinter.golden view
@@ -0,0 +1,3 @@+{-# LANGUAGE TypeApplications #-}+module T326 where+(@:) a b = a