packages feed

haskell-src-exts 1.22.0 → 1.24.0

raw patch · 50 files changed

Files

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 &#xa7; 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