packages feed

haskell-src-exts 1.22.0 → 1.23.0

raw patch · 20 files changed

+1756/−13 lines, 20 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Language.Haskell.Exts: CloseArrowBracket :: Token
+ Language.Haskell.Exts: OpenArrowBracket :: Token
+ Language.Haskell.Exts.Extension: BlockArguments :: KnownExtension
+ Language.Haskell.Exts.Lexer: CloseArrowBracket :: Token
+ Language.Haskell.Exts.Lexer: OpenArrowBracket :: Token
+ Language.Haskell.Exts.Syntax: ArrOp :: l -> Exp l -> Exp l

Files

CHANGELOG view
@@ -1,5 +1,15 @@+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.23.0 License:                BSD3 License-File:           LICENSE Build-Type:             Simple
src/Language/Haskell/Exts/ExactPrint.hs view
@@ -1727,6 +1727,13 @@             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          _:b:pts -> do
src/Language/Haskell/Exts/Extension.hs view
@@ -558,6 +558,8 @@    | QuantifiedConstraints +  | BlockArguments+   deriving (Show, Read, Eq, Ord, Enum, Bounded, Data, Typeable)  -- | Certain extensions imply other extensions, and this function
src/Language/Haskell/Exts/InternalLexer.hs view
@@ -99,6 +99,8 @@         | RightArrowTail        -- >-         | LeftDblArrowTail      -- -<<         | RightDblArrowTail     -- >>-+        | OpenArrowBracket      -- (|+        | CloseArrowBracket     -- |)  -- Template Haskell         | THExpQuote            -- [| or [e|@@ -685,13 +687,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@@ -1375,6 +1376,8 @@   RightArrowTail    -> ">-"   LeftDblArrowTail  -> "-<<"   RightDblArrowTail -> ">>-"+  OpenArrowBracket  -> "(|"+  CloseArrowBracket -> "|)"   THExpQuote        -> "[|"   THTExpQuote       -> "[||"   THPatQuote        -> "[p|"
src/Language/Haskell/Exts/InternalParser.ly view
@@ -172,11 +172,13 @@ >       '>-'    { Loc $$ RightArrowTail } >       '-<<'   { Loc $$ LeftDblArrowTail } >       '>>-'   { Loc $$ RightDblArrowTail }+>       '(|'    { Loc $$ OpenArrowBracket }+>       '|)'    { Loc $$ CloseArrowBracket }  Harp ->       '(|'    { Loc $$ RPGuardOpen }->       '|)'    { Loc $$ RPGuardClose }+>       '(/'    { Loc $$ RPGuardOpen }+>       '/)'    { Loc $$ RPGuardClose } >       '@:'    { Loc $$ RPCAt }  Template Haskell@@ -1431,6 +1433,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 +1462,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 +1489,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 +1550,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/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/Pretty.hs view
@@ -1081,6 +1081,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 +1627,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/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
+ 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)